10-11-2011, 02:13 PM
|
|
StraightBro
Industry Role:
Join Date: Aug 2003
Location: Monarch Beach, CA USA
Posts: 56,229
|
Quote:
Originally Posted by raymor
You've asked for two very different things. Removing words that DO have bad characters is different from removing words than do NOT have "good" characters. What if it has both?
To remove words that have the "bad" character:
\w is the class of word characters. You're looking for a string containing at least one "bad character" and optionally some word characters.
"Words", as you define them, are strings of word characters and &, which is represented as \w|& .
So your assuming & is the bad character, the regular expression is:
(\w|&)*&(\w|&)*
preg_replace('/(\w|&)*&(\w|&)*/', "", $subject);
Removing them based on what they do NOT have is a different thing than removing things based on what they DO have as above. In this case, you're looking for strings of [^.,<>?~@#$%^&*()], bracketed by space characters I suppose since you have .,? and other non-word characters part of your class.
So you're looking for:
\s[^.,<>?~@#$%^&*()]+\s
and replacing it with a single space delimiter like this:
preg_replace('/\s[^.,<>?~@#$%^&*()]+\s/', " ", $subject);
|
DAMN that was quick, well done! 
__________________
Skype: CallTomNow
|
|
|