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."BRBR";
echo $string."BRBR";
for($i=0;$i$num;$i++) {
$string = eregi_replace("{$bannedwords[$i]}","[censored]",$string);
}
*/
echo $string."BRBR";
// 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."BRBR";
// test the start word and exchange
reset($bannedwords);
foreach ($bannedwords as $word) {
$string = eregi_replace("^{$word}","[censored] ",$string);
}
echo $string."BRBR";
// test the end word and exchange
reset($bannedwords);
foreach ($bannedwords as $word) {
$string = eregi_replace("{$word}$","[censored]",$string);
}
echo $string."BRBR";
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]