Jump to content
php.lv forumi

teksta filtreeshana ar preg_replace


Recommended Posts

Posted

$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?

Posted

nu strip_tags jau notiira tikai pashus tagus, bet ne tekstu, kas ir starp vinjiem, bet vaidzeetu jau arii notiiriit tekstu starp vinjiem. Kas buus, ja teiksim komentos, lietotaajs saak peekshi vadiit <table utt. ;)

Posted (edited)

htmlspecialchars() neder?

Starp citu, pierakstam .*? nav jēgas, jo * nozīmē 0..n reizes, tāpēc ? zīmi nav jēgas likt klāt.

Edited by bubu
Posted

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

Posted

Es panjemu un ar strip_tags nonjemu pilnigi visus tagus un lietoju bbcode, shita tev neder?

Posted

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

Posted

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!

Posted

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>');

×
×
  • Create New...