* Thus wrote kioto:
> Hi all.
> I have a problem: i want subs any characters from a string but i don't 
> have fix the problem.
> The string that i want to manipulate is the value from a text field of a 
> search engine.
> The characters that i want to try substitute is &&, &, +, -, |, ||, or, 
> and, not in not case-sensitive mode with "".
> I have create a  pattern like this:
> 
> $str = "Sybase and PHP not ASP or JSP && Oracle not Andy | Perl || 
> Python + Ruby";
> $pattern = 
> "/(\band\b)|(\bnot\b)|(\bor\b)|(\b&&\b)|(\b&\b)|(\b\.\b)|(\b\+\b)|(\b\|\|\b)|(\b\|\b)/i";
> echo $str = preg_replace($pattern, "", $str, -1);
> 
> But characters like + && don't subs with "".
> Thanks to all and sorry my bad language

thats because & +  | are word boundaries. Also, you have to many
sub patterns, you dont need all the () around each item, wrap the
whole expression in ().  And finally, you dont take into
consideration of spaces, around each item you have a space so
you'll end up with two spaces between each word.  Your final
expression should be:

  $pattern = "/\s*(\band\b|\bnot\b|\bor\b|&&|&|\b\.\b|\+|\|\||\|)\s*/i";


And replace all that with one space:

  $str = preg_replace($pattern, ' ', $str);


HTH,

Curt
-- 
Quoth the Raven, "Nevermore."

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to