Phpblog: strip_tags a mezery
Phpblog: strip_tags a mezery
2006-02-08 19:06 |
3206 x
Programování
Řešil jsem nedávno celkem zajímavý problém v jazyce PHP. Dostal jsem text obsahující (X)HTML tagy a potřeboval jsem tento obsah překonvertovat do podoby, ve které by se dobře vyhledávalo. Ideální úloha pro funkci strip_tags.
Problém však nastává v okamžiku zjištění, že tato funkce smaže všechny tagy bez náhrady - nenahradí je žádným znakem, prostě je jen vymaže.
Příklad
HTML text:
<ul> <li>prvni polozka</li> <li>druha polozka</li> </ul>
Výstup:
prvni polozkadruha polozka
Pro potřeby vyhledávání to žádný zásadní problém není, pokud nepotřebujete hledat celá slova. Pokud je ovšem požadováno výstup zobrazit uživateli nastává problém.
Funkce nahradí tagy mezerami
Hledal jsem na fórech nějakou fuknci, která by dokázala tagy nahradit mezerami, aby výstupní kód zůstal zobrazitelný. Nakonec jsem našel funkci, která to dokáže.
function strip_tags_by_spaces($text) { $text = preg_replace('/</',' <',$text); $text = preg_replace('/>/','> ',$text); $desc = html_entity_decode(strip_tags($text)); $desc = preg_replace('/[\n\r\t]/',' ',$desc); $desc = preg_replace('/ /',' ',$desc); return $desc; }

