Jump to content
php.lv forumi

teksta filtreeshana ar preg_replace


Analgiins

Recommended Posts

$text = preg_replace("'<p[^>]*?>.*?</p>'", "", $text);

ar sho kodu es tekstaa nonjemu visus <p> tagus un ariidzan tekstus, kas ir starp vinjiem (saakuma un nosleedzosho tagu).

 

Bet man vajag izfiltreet taa, lai tekstaa paliktu tikai teksts starp manis atljautajiem tagiem (nu kaut vai tas pats <p>), un arii teksts kas nav starp nekaadiem tagiem.

Uzrakstiiju shitaa, bet iisti nedara to, ko vaig:

$text = preg_replace("'<[^p]*>.*?</[^p]*>'", "", $text);

Var kaads paliidzeet?

Link to comment
Share on other sites

htmlspecialchars jau nokonvertee tikai speciaalos simbolus uz HTML entiitijaam, godiigi sakot es nesaprotu, ka es vinju varu pielietot tekstu filtreeshanai.

 

Doma jau bij taada, ka ar shaadaai liidziigu rindinju:

 

$text = preg_replace("'<script[^>]*?>.*?</script>'", "", $text);

 

es nodzeeshu visu, kas ir script tagos, bet HTML tagi tach ir daudz un dazhaadi (kaut kur ap 90 laikam) un raxtiit apmeeram 90 shaadas rindinjas, lai nofiltreetu katru tagu (nu iznjemot, tos kurus es atljauju tur p, u, i, B) nebuutu visai racionaali, taapee doma bija uztaisiit kaadu universaalu RegEx, kas nofiltree tekstu

Link to comment
Share on other sites

nee nu dereet jau der :)

piemeeram, testeeju php.lv/f - reku panjemu kodu no sava tekst editora un pa taisno peistoju sheit, luuk rezultaats:

 

<table width="73" border="1" cellpadding="0" cellspacing="0" bgcolor="red">

<!--DWLayoutTable-->

<tr>

<td width="73" height="76">nelabais teksts, kas atrodas tabulaa.. nu vispaar whatever</td>

</tr>

</table>

 

es pienjemu, ka te (aka php.lv/f) ar htmlspecialchars speciaalie simboli tiek nokonverteeti, nu bet anyway, kau kaa negribeetos, lai shitaa te spamotu, taapeec nederees tikai strip_tags, jo tad vienalga paliks tas

nelabais teksts, kas atrodas tabulaa.. nu vispaar whatever

Link to comment
Share on other sites

Bet strip_tags tachu izdzesh visu textu, kas ir starp neatljautiem tagiem, ja buus strip_tags($text); tad nekadi html tagi nestradas. Tad ar BBcode tu lieto ko vajag un nerkads spams nebuus!

Link to comment
Share on other sites

nu piedo atvaino, bet strip_tags izdzeesh tikai neatljautos tagus (nu un arii atribuutus vinjos), bet ne jau tekstu starp tiem (speciaali boldriku lieku, lai saprastu), piem., kas atrodas starp <h1>bla bla</h1>, vai <p>paragraafs</p>

 

Paskaties pats (sourcee!), ko izvada shis pieraksts:

echo strip_tags('<h1>bla bla</h1> un <p>paragraafs</p>', '<p>');

Link to comment
Share on other sites

×
×
  • Create New...