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 <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
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 [EMAIL PROTECTED] wrote:

> In article <[EMAIL PROTECTED]>, [EMAIL PROTECTED]
> (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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to