Autor | Zpráva | ||
---|---|---|---|
lionel messi Profil |
Zdravím,
programujem si v PHP a MySQL vyhľadávanie, ale jedným veľkým problémom je, že v DB mám uložený samozrejme celý text článku. Pri vypísaní výsledkov by som ho však potreboval orezať tak, aby sa zobrazilo povedzme len 10 slov pred/za vyhľadávaným slovom. Snažím sa zosmoliť nejaký regulár, kt. ale vôbec nefunguje a text neskráti: <?php $objekt = "slovo"; //vyhľadávané slovo preg_replace ("~(.*)([^ ] ){10}(". $objekt .")( [^ ] ){10}(.*)~iU", "\\2\\3\\4", $text) ?> Je toto vôbec možné pomocou regexp. urobiť, resp. ako by sa dal tento problém vyriešiť? Ďakujem veľmi pekne za odpoveď. |
||
juriad Profil |
Toto se dělá trochu jinak: vezmi prvních přibližně 200 znaků, pak najdi poslední mezeru a vše za ní zahoď. Na počtu slov většinou nezáleží.
Nezkoušel jsem to, ale takto nějak: $pozice = strpos($text, $slovo); $end = max(strrpos($text, ' ', -($pozice + strlen($slovo) + 200)), $pozice + strlen($slovo)); $start = min(strpos($text, ' ', $pozice - 200), $pozice); substr($text, $start, $end - $start); |
||
lionel messi Profil |
#3 · Zasláno: 16. 2. 2014, 12:46:32
juriad:
Ešte raz ďakujem, neskôr vyskúšam a dám vedieť. |
||
juriad Profil |
#4 · Zasláno: 16. 2. 2014, 12:47:22
Pozor na to, že min, max musíš naprogramovat sám, neboť se nepěkně chovají vůči FALSE, které může strpos a strrpos vrátit.
|
||
Časová prodleva: 11 let
|
0