Re: Help w/ regular expressions for banned words

From: Date: Sat, 20 Jan 2001 17:45:52 +0000
Subject: Re: Help w/ regular expressions for banned words
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-35818@lists.php.net to get a copy of this message
try this; I am working on the last word... ereg replace is not finding the REGEX "\.$" - anyone has a clue? <? $bannedwords = array ("dadada", "dedede", "dididi"); $string = "Dadada in this world dadaDA is not permitedadada because this very deDede peoplededede that appears in our DIDIDi world dedede."; $num=count($bannedwords); /* echo $num."<BR><BR>"; echo $string."<BR><BR>"; for($i=0;$i<$num;$i++) { $string = eregi_replace("{$bannedwords[$i]}","[censored]",$string); } */ echo $string."<BR><BR>"; // take out the damn ; . : chars on the end of the string and save for later /* elseif (ereg("\;$",$string)) { ereg_replace("\;$","",$string); $semmicolon = TRUE; } elseif (ereg("\:$",$string)) { ereg_replace("\:$","",$string); $colon = TRUE; } else { $dot = TRUE; $semmicolon = TRUE; $colon = TRUE; } */ $hasdot = ereg("\.$",$string); if ($hasdot) { ereg_replace("\.$","test",$string); $dot = TRUE; } // the middle words reset($bannedwords); foreach ($bannedwords as $word) { $string = eregi_replace(" {$word} "," [censored] ",$string); } echo $string."<BR><BR>"; // test the start word and exchange reset($bannedwords); foreach ($bannedwords as $word) { $string = eregi_replace("^{$word}","[censored] ",$string); } echo $string."<BR><BR>"; // test the end word and exchange reset($bannedwords); foreach ($bannedwords as $word) { $string = eregi_replace("{$word}$","[censored]",$string); } echo $string."<BR><BR>"; echo $dot."<BR>"; echo $hasdot; ?> ----- Original Message ----- From: Team JUMP <lists@jumpinternet.com> To: <php-general@lists.php.net> Sent: Saturday, January 20, 2001 12:35 PM Subject: Re: [PHP] Help w/ regular expressions for banned words Thanks for your help. Unfortunately, [:space:]$bannedwords[$i][:space:] would not work, since I need to also check for the first and last word. In a last-case scenario I could write special code for the first and last word, but that may get ugly with bug-checking... but I've already tried "\s+$bannedwords[$i]\s+" to no avail. I believe [:space:] is just a substitute for \s+, right? Yeah, I've tried \<$bannedwords[$i]\> too, unfortunately. Like I said before, eregi_replace("a","[censored]",$string) makes a match, but eregi_replace("\<a\>","[censored]",$string) or eregi_replace("\ba\b","[censored]",$string) does not. Most odd. Thanks for your help, though. Anyone else have suggestions? --Neal on 1/20/01 12:20 PM, CC Zona at cczona@nospam.invalid wrote: > In article <B68F2A37.47AD%lists@jumpinternet.com>, lists@jumpinternet.com > (Team JUMP) wrote: > >> $num=count($bannedwords); >> for($i=0;$i<$num-1;$i++) >> { >> $string = >> eregi_replace("\b$bannedwords[$i]\b","[censored]",$string); >> } >> >> >> For whatever reason, no word in $bannedwords will match in the string. I've >> tested it with simple expressions like "\btest\b" and it will not match the >> word "test". > > Have you tried it with either "[:space:]$bannedwords[$i][:space:] or > "\<$bannedwords[$i]\>" yet? Also, I think using a foreach($bannedwords as > $current_word) would be a better choice here; more compact, and loops all > the way to the end of the array even when the numerical index does not > follow the expected sequence. (BTW, if you want to stick with the for() > and you know the index numbers will always be sequentially zero to > whatever, then your test should be just $i<$num. Otherwise, you're > skipping the final loop.) -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net For additional commands, e-mail: php-general-help@lists.php.net To contact the list administrators, e-mail: php-list-admin@lists.php.net

« previous php.general (#35818) next »