hack988 hack988 wrote:
> Use preg_replace_callback instead!
> preg_replace_callback is better performance than preg_replace with /e.
> ---------------------------------------------------------------------------------
> code
>
> $str="cats i saw a cat and a dog";
> $str1=preg_replace_callback("/(dog|cat|.)/is","call_replace",$str);
> echo $str."<BR/>";
> echo $str1;
> function call_replace($match){
> if(in_array($match[0],array('cat','dog')))
> return $match[0];
> else
> return "";
> }
>
> 2009/8/24 tedd <[email protected]>:
>>> On Sat, Aug 22, 2009 at 12:32 PM, “•ÈýÏÝ“•ÂÔ<[email protected]>
> wrote:
>>>> Lets assume I have the string "cats i saw a cat and a dog"
>>>> i want to strip everything except "cat" and "dog" so the result will be
>>>> "catcatdog",
>>>> using preg_replace.
>>>>
>>>>
>>>> I've tried something like /[^(dog|cat)]+/ but no success
>>>>
>>> > What should I do?
>> Lot's of ways to skin this cat/dog.
>>
>> What's wrong with exploding the string using spaces and then walking the
>> array looking for cat and dog while assembling the resultant string?
>>
>> Cheers,
>>
>> tedd
>>
>>
>> --
>> -------
>> http://sperling.com http://ancientstones.com http://earthstones.com
>>
>> --
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>
>
Certain posts of mine seem to get sucked into a black hole and I never
see theme. Maybe because I use this list as a newsgroup? Anyway, what
I posted before:
Match everything but only replace the backreference for the words:
$s = "cats i saw a cat and a dog";
$r = preg_replace('#.*?(cat|dog).*?#', '\1', $s);
--
Thanks!
-Shawn
http://www.spidean.com
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php