Autor | Zpráva | ||
---|---|---|---|
Antonn Profil * |
#1 · Zasláno: 14. 10. 2009, 21:56:41
Zdravím,
potřeboval bych poradit jak rozdělit větu na slova za pomocí php. Příklad. Aneta utíkala nakupovat, koupila rohlíky a kávu. php script by z toho udělal. Aneta;utíkala;nakupovat;koupila;rohlíky;kávu. ale pouze slova delší jak 3 slabiky aby script vynechal předložky a spojky a podobně, nejlepší to bude asi ukládat do pole, ale nevím přesně jak. existuje nějaká funkce php, která by to zvládla? --------------------------------------------------------------------- Chci to použít do klíčových slov do stránky kde každé slovo bude fungovat jako tag při kliknutí na něj se spustí hledání /hledat.php?co=(klíčové slovo z věty) Předem díky Anton |
||
MCKAY Profil |
#2 · Zasláno: 14. 10. 2009, 22:01:53
A co si třeba trochu vyhrát s funkcí
<?php explode();?> |
||
Radek9 Profil |
#3 · Zasláno: 14. 10. 2009, 22:03:40 · Upravil/a: Radek9
<?php $veta = "Aneta utíkala nakupovat, koupila rohlíky a kávu."; $veta = explode(" ", $veta); $vysledek = ""; foreach($veta as $slovo){ if(iconv_strlen($slovo)>3){ $vysledek .= $slovo.";"; } else{ $vysledek .= $slovo." "; } } ?> Edit: ještě jsem to trochu upravil. |
||
Antonn Profil * |
#4 · Zasláno: 14. 10. 2009, 22:04:33
Díky, to určitě vyzkouším a vypadá to, že to bude stačit.
|
||
Antonn Profil * |
#5 · Zasláno: 14. 10. 2009, 22:10:05
Radek9: Také děkuji, jen ještě malý problém pokud si vypíšu například v této větě druhé slovo (utíkala) hodí mě to výsledek se špatnou diakritkou a to utĂkala. Nějaké řešení?
|
||
Timy Profil |
#6 · Zasláno: 14. 10. 2009, 22:17:24
|
||
Watchick Profil |
#7 · Zasláno: 15. 10. 2009, 10:01:43
špatně nastavené kódování stránky a scriptu?
|
||
Radek9 Profil |
#8 · Zasláno: 15. 10. 2009, 13:52:50
Antonn:
Buďto pomocí headeru nebo pomocí meta tagu musíš nastavit kódovávní. |
||
Majkl578 Profil |
#9 · Zasláno: 15. 10. 2009, 15:02:22 · Upravil/a: Majkl578
$text = 'Aneta utíkala nakupovat, koupila rohlíky a kávu.'; preg_match_all("~[\pL\.]{3,}~ui", $text, $matches); var_dump($matches, implode(';', $matches[0])); jen upozornuji, ze vyzaduje unicode (dnes standard) |
||
Tresorg Profil * |
#10 · Zasláno: 17. 10. 2009, 13:25:36
$text = 'Aneta utíkala nakupovat, koupila rohlíky a kávu.';
preg_match_all("~[\pL\.]{3,}~ui", $text, $matches); var_dump($matches, implode(';', $matches[0])); hodilo by se mi to taky ale nvm jak to vypsat abych k tomu moch dat odkazy. dik za pomoc |
||
Časová prodleva: 1 rok
|
|||
zedna Profil * |
#11 · Zasláno: 30. 11. 2010, 16:03:00
tento kod funguje ale kdyz jsem to zkousel na jinem serveru(jeste nevim jake ma jine nastaveni), tak to vubec nefungovalo.
pomohlo az jedine preg_match_all("~[\w\.]{2,}~ui", $text, $matches); jenze problem je v tom, ze se vubec nezobrazuji znaky v diakritikou a co vic, nemohu nikde najit manual kde jsou jednotlive regularni vyrazy vypsany a vysvetleny mate nekdo nejaky napad? |
||
__construct Profil |
zedna:
Založ si vlastné vlákno - nepíš semm. Moderátor Alphard: Viz Nejčastější potíže s PHP (FAQ). Jestli to nestačí, založte si nové vlákno.
|
||
Časová prodleva: 1 rok
|
|||
Martin Adámek Profil * |
#13 · Zasláno: 25. 3. 2012, 18:55:17
Pokud byste někdo potřeboval oddělovat slova i podle jiných znaků (tečka, čárka, závorka) než jen podle mezer
(a přitom zachovat informaci o tom, kde je jaký oddělovač, aby se věta zase dala slepit), můžete využít tento skript: Náhrada funkce explode pro více oddělovačů M |
||
Nox Profil |
#14 · Zasláno: 25. 3. 2012, 19:50:37
Když už je tu ta nekromancie ... co takhle http://php.net/manual/en/function.preg-split.php ?
|
||
Martin Adámek Profil * |
#15 · Zasláno: 25. 3. 2012, 20:26:51
Pro můj účel není ten split až tak vhodný, potřeboval jsem udržet informaci i o oddělovačích, abych to zase mohl slepit (i když u splitu by se jakžtakž dal využít údaj offset, ale při použití i dvouznakových oddělovačů (escape sekvence) už by to nebylo efektivní)
|
||
Nox Profil |
#16 · Zasláno: 25. 3. 2012, 20:30:27
Však taky neřešim tebe ale "Rozdělení věty na slova" ;) dávám alternativní řešení, když už se to oživilo
|
||
Časová prodleva: 11 let
|
0