From: "Thaddeus J. Quintin" <[EMAIL PROTECTED]>
> I'm looking to replace the 'nth' instance of an expression within a
string.
>
> Example (very simple)-
>
> $string="My mom can beat up your mom and your mom's dog";
> $pattern="mom";
> $replacement="dad";
>
> I want to be able to replace any particular instance of the pattern
> within that string. I was getting ready to do it in a very complex
> manner by finding all the matches, splitting on the pattern, and then
> breaking the string down and reassembling it in the proper order. It
> seems like there might be an easier way to perform this though.
>
> Anyone have any suggestions?
Along with my other suggestion, if you're really looking to replace one
string with another, instead of a regular expression pattern, then you could
use this code, also:
<?php
//Original String
$str = 'bb a a a a a a a a a a bb';
//Search String
$search_string = 'a';
//Replacement String
$replacement_string = 'ff';
//Instances of search string you want replaced
//i.e. 2nd and 4th instance is array(2,4)
$instance = array(2,4,6);
//Explode original string by search string
$ar = explode($search_string,$str);
//Get count of elements. Subtract one since you
//do not to loop through last element
$c = count($ar) - 1;
//Holder for new string
$new_str = '';
//Loop from zero to number of matches minus one ($c).
for($x=0;$x<$c;$x++)
{
//Add current element to new string
$new_str .= $ar[$x];
//if current count is in $instance array, add replacement string
//otherwise add back original search string
if(in_array($x+1,$instance))
{ $new_str .= $replacement_string; }
else
{ $new_str .= $search_string; }
}
//add on final element of array
$new_str .= $ar[$x];
//Display results
echo $str . '<hr>' . $new_str;
?>
---John Holmes...
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php