Scoate cuvinte dintr-un text . Ajutor ....
Last Updated: Feb 27 2009 19:48, Started by
meeesiatat
, Feb 18 2009 00:04
·
0
#1
Posted 18 February 2009 - 00:04
uitati , am o problema ... nu le am cu php`u pt ca sunt la inceput dar imi doresc sa invat . Vreau sa fac urmatoarea chestie : Vreau sa fac un script in php in care sa bag eu un text de n propozitii fraze cuvinte .... si sa imi scoata toate cuvintele din text . De exemplu :
Din textul : Vreau sa invat php sa il scoata asa: Vreau sa invat php textului sa i pot da eu paste intr-o casuta nu sa il bag in script . Va rog mult de tot ajutatima ... |
#2
Posted 18 February 2009 - 00:48
Poti folosi strtok().
Daca ma gandesc mai bine, si textul e scurt, poti folosi chiar explode() sau ca sa imparti dupa orice tip de spatiu poti folosi preg_split() cu '/\s+/' ca pattern. Bafta Edited by florindinu, 18 February 2009 - 00:53. |
#3
Posted 18 February 2009 - 07:54
florindinu, on Feb 18 2009, 00:48, said: Poti folosi strtok(). Daca ma gandesc mai bine, si textul e scurt, poti folosi chiar explode() sau ca sa imparti dupa orice tip de spatiu poti folosi preg_split() cu '/\s+/' ca pattern. Bafta care e diferența dintre strtok și explode? care e de preferat a fi folosit mai des? |
#4
Posted 18 February 2009 - 17:18
#5
Posted 18 February 2009 - 17:27
Saurian, on Feb 18 2009, 08:54, said: care e diferența dintre strtok și explode? care e de preferat a fi folosit mai des? Deci, tu ce crezi? meeesiatat, on Feb 18 2009, 18:18, said: imi poti da un exemplu concret ? vreau sa am un input unde sa bag textu .. un text mare de mii de cuvinte si sa imi scoata fiecare cuvant .... <?php ..... ?> ma poti ajuta ? Singurul lucru la care trebuie sa fii atent este ca la primul apel al functiei primul parametru trebuie sa fie stringul insusi. |
#6
Posted 18 February 2009 - 17:30
meeesiatat, on Feb 18 2009, 17:18, said: imi poti da un exemplu concret ? vreau sa am un input unde sa bag textu .. un text mare de mii de cuvinte si sa imi scoata fiecare cuvant .... <?php ..... ?> ma poti ajuta ? functia explode functia strtok Și adaugă la site-uri favorite http://www.php.net dacă vrei să continui cu PHP. E foarte complet cu exemple și cu tot ( e și normal din moment ce e site-ul oficial PHP ) OriginalCopy, on Feb 18 2009, 17:27, said: Uita-te putin pe ce face practic strtok() si ce face explode() si reflecteaza asupra resurselor necesare. Deci, tu ce crezi? Nu știu Eventual cere mai multe resurse strtok din cauză că memorează unde s-a ajuns la șir la un moment dat? Iluminează-mă |
#7
Posted 18 February 2009 - 18:09
Saurian, on Feb 18 2009, 17:30, said: functia explode functia strtok Și adaugă la site-uri favorite http://www.php.net dacă vrei să continui cu PHP. E foarte complet cu exemple și cu tot ( e și normal din moment ce e site-ul oficial PHP ) Nu știu Eventual cere mai multe resurse strtok din cauză că memorează unde s-a ajuns la șir la un moment dat? Iluminează-mă uite , a fost primu lucru care l`am facut , am citit pe php.net , va rog eu mult am inteles imi dati sfaturi dar nu ma poate ajuta nimeni sa imi fac scriptuletu ca exemplu ? Edited by meeesiatat, 18 February 2009 - 18:10. |
#8
Posted 18 February 2009 - 18:50
#9
Posted 18 February 2009 - 20:27
Vrei un exemplu?
$text = 'ceva text'; print_r(explode(' ', $text)); Spor la treaba . |
#10
Posted 18 February 2009 - 20:57
Saurian, on Feb 18 2009, 18:30, said: Nu știu Eventual cere mai multe resurse strtok din cauză că memorează unde s-a ajuns la șir la un moment dat? Iluminează-mă Nu. Deci ambele functii isi salveaza informatiile in RAM. Diferenta este ca strtok se serveste in mod secvential cu date pe masura ce citesti, deci face mai putin uz de tabelele cu simboluri (hash tables) din interiorul zend engine. Ok, ok ... complicat de inteles fara putine cunostinte despre php internals sau in general despre compilatoare/parsere ... deci tot scriind am decis sa renunt la explicatii Pur si simplu este asa: strtok() foloseste resursele mai econom (nu injecteaza date in runtime decat atunci cand este nevoie de ele - la cerere) "strtok() este pentru explode() ceea ce XMLReader este pentru DOM" cam asta e cea mai buna analogie. LE: o sa pun la cale un benchmark |
|
#11
Posted 18 February 2009 - 22:01
Exemplele de pe php.net de la strtok puteau fi mai bune.
Uite cum vad eu strtok()... explode() e ok pentru a imparti un string atunci cand delimitatorul e constant, daca in schimb vrei sa faci split in functie de anumiti delimitatori ce se schimba in functie de rezultatele anterioare atunci folosesti strtok(). Practic cu strtok() faci lexical analyzers. |
#12
Posted 18 February 2009 - 22:07
Explode() returneaza un array de string-uri, pe cand strtok() returneaza un singur string, si anume primul pana la delimitator. Cel putin asa vad eu problema.
$explode_ret = explode(' ', "unu doi trei"); $explode_ret[0] este egal cu "unu"; $explode_ret[1] este egal cu "doi"; $explode_ret[2] este egal cu "trei"; ---- $tok = strtok("unu doi trei", ' '); while ($tok !== false) { $tok = strtok(' '); } $tok este egal cu "trei";In concluzie cu explode ai stocate toate cuvintele din textul tau intr-un array de stringuri ($explode_ret[]), pe cand cu strtok ai acces la cuvinte pe rand, unul cate unul, intr-un singur string ($tok). Edited by dmxghost, 18 February 2009 - 22:09. |
#13
Posted 18 February 2009 - 22:14
<?php $mem_start = memory_get_usage(); $str = "hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world"; $mem_str = memory_get_usage(); echo "$mem_str - $mem_start = ".($mem_str - $mem_start)." (bytes used), actual len= ".strlen($str)."+1 (terminating NUL)\n"; //---------------------------- end of testcase 1 //unset($mem_start,$mem_str); $mem_start = memory_get_usage(); $exploded = explode(' ',$str); $mem_exploded = memory_get_usage(); echo "$mem_exploded - $mem_start = ".($mem_exploded - $mem_start)." (bytes used)\n"; //---------------------------- end of testcase 2 //unset($mem_start,$mem_exploded,$exploded); $mem_start = memory_get_usage(); $tok = strtok($str,' '); do { echo $tok; } while($tok = strtok(' ')); $mem_tok = memory_get_usage(); echo "\n$mem_tok - $mem_start = ".($mem_tok-$mem_start)."\n"; //---------------------------- end of testcase 3 Ceea ce bineinteles imi ridica intrebari: daca folosesti unset() - care momentan este comentat, atunci testcase-ul 3 ocupa ... zero bytes! LE: oricum se vede clar ca explode() foloseste cativa kilobytes buni (~50), in timp ce strtok() cateva sute de bytes. [1] intrebare idioata, mi-am dat seama - unset() nu elibereaza acea memorie (cu efree()), ci o pastreaza pentru mai tarziu intr-un memory pool, ca in Apache's APR. Edited by OriginalCopy, 27 February 2009 - 19:27. |
#14
Posted 19 February 2009 - 03:15
uitati .. am nevoie ceva de genu acesta ... pana aici m`am descurcat ...
<?php $content = file_get_contents(text); $p = explode(" ", $content); echo '<br>'; echo $p[1]; echo '<br>'; echo $p[2]; echo '<br>'; echo $p[3]; ?> acesta imi ia primele 3 cuvinte din fisierul "text" . cum fac sa imi ia toate ?? e ceva cu $p++ da nu imi dau seama cum sa fac . ma puteti ajuta ? |
#15
Posted 19 February 2009 - 03:28
ce te opreste sa folosesti direct str_replace sau preg_replace? daca tot vrei doar sa inlocuiesti spatiile dintre cuvinte cu <br>.
|
|
#16
Posted 19 February 2009 - 03:41
nu aia e problema . problema e cum sa fac sa imi afiseze fiecare cuvant din fisieru 'text' unu sub altu . ma poate ajuta careva ? ......
|
#17
Posted 19 February 2009 - 03:45
#18
Posted 19 February 2009 - 07:49
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users