Přejděte na >> nový blog <<
Z důvodů těžké spravovatelnosti tento blog zavírám a bude sloužit již jen jako archiv článků.
Weblog   Foto galerie   Odkazy   Implementace katedrálního portálu   ZČU-FAV

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; 

} 
Jméno
Email
http://
Zpráva
  Příkazy Textile