Autor Zpráva
peto
Profil *
mam text "prveslovo zvysok spravy z viac slov" a potrebujem aby v premenej $prva bolo prve slovo a v premenej $druha zvysok spravy neviete niekto ako to spravit? moc by ste mi pomohli...
nightfish
Profil
[pre]<?php
$str = "prveslovo zvysok spravy z viac slov";
list($prva,$druha) = split(" ", $str, 2);
echo "prva: $prva<br >druha: $druha";
?>
D1ce
Profil
peto K čemu by to bylo dobré? Opravdu by mě to zajímalo.

nightfish Výstup, dle mě chybný:

prva: prveslovo
druha: zvysok spravy z viac slov

Tady je moje řešení:


/**
* Vstupni promenna
*/
$str = 'prveslovo zvysok spravy z viac slov';
/**
* Inicializace promenne $matches
*/
$matches = '';
/**
* Prvni zavorka odpovida vsem retezcum, ktere
* neobsahuji mezeru. Druha zavorka odpovida
* vsem retezcum skladajicich se z 2 retezcu, ktere
* neobsahuji mezeru a je meze nimi mezera
* @link http://cz.php.net/manual/en/function.preg-match.php
*/
preg_match('/([^ ]+) ([^ ]+ [^ ]+)/m', $str, $matches);
/**
* Prirazeni promenne odpovidajici prvni zavorce
*/
$prva = $matches[1];
/**
* Prirazeni promenne odpovidajici druhe zavorce
*/
$druha = $matches[2];
/**
* Promennou $matches nepotrebujeme, tak ji smazneme
*/
unset($matches);
/**
* Pro spravne formatvoani
*/
echo '<pre>';
/**
* Dump z obou promennych
* (fce ktera vypise obsah a typy)
* @link http://cz.php.net/manual/en/function.var-dump.php
*/
var_dump($prva, $druha);
llook
Profil
D1ce
No já nevím. "Zvysok spravy" pokud vím slovensky znamená "zbytek zprávy", řekl bych, že nightfishův kód nemá chybný výstup. Akorát místo split bych použil explode.

list($prva,$druha) = explode(" ", $str, 2);
D1ce
Profil
llook
Tak to se hluboce omlouvám, moje chyba. No prostě niemumím po slovenski, sorry.
Dovolte mi abych si taky mírně v mezích pravidel tohoto fóra rýpnul.

> "Zvysok spravy" pokud vím slovensky znamená "zbytek zprávy"
Chápu, ale nemá tam namísto slovensky být česky?

> Akorát místo split bych použil explode.

> list($prva,$druha) = explode(" ", $str, 2);
split() je o dva znaky kratší ;) , ale plně by vás omlouvalo, kdyby byl explode() rychlejší, což jsem ovšem moc líný testovat.
D1ce
Profil
>> list($prva,$druha) = explode(" ", $str, 2);
> split() je o dva znaky kratší ;) , ale plně by vás omlouvalo, kdyby byl > explode() rychlejší, což jsem ovšem moc líný testovat.

Co se ovšem neomlouvá, jsou dvoité uvozovky, ty jsou totiž o nějaké drobné pomalejší než jednoduché. ;)
peto
Profil *
D1ce
potrebujem to na spracovanie smsiek cez GET dostanem text spravy a pre slovo je identifikacia usera...

diq vsem frci to a sorry za tu slovencinu :)
peto
Profil *
*prve slovo
nightfish
Profil
diq vsem frci to a sorry za tu slovencinu :)
netřeba se omlouvat, pravidla ji povolují...
llook
Profil
D1ce
Není třeba testovat, stačí kouknout do manuálu: If you don't require the power of regular expressions, it is faster to use explode()...

A dvojité uvozovky pomalejší nejsou, to je pověra. Říká se, že provádění zpomaluje jakési "hledání proměnných". Jenže toto hledání probíhá už na úplném začátku zpracování skriptu - při lexikální analýze - a obyčejný text bez proměnných PHP zpracuje prakticky stejně rychle v kterýchkoli uvozovkách.
Skripty zpomalují úplně jiné věci.

Když už bychom chtěli být tak důslední... Dokumentační komentáře jsou v PHP5 nepatrně pomalejší než obyčejné komentáře, je to důvod je nepoužívat?
D1ce
Profil
llook
> Když už bychom chtěli být tak důslední... Dokumentační komentáře jsou v PHP5 nepatrně pomalejší než obyčejné komentáře, je > to důvod je nepoužívat?

;)

Sice jsem v kódu nedokumentoval ty správné elementy, tak aby se to projevilo na výsledné dokumentaci, ale zavádím si nové(snad dobré) návyky.

phpdoc.org
Toto téma je uzamčeno. Odpověď nelze zaslat.

0