Ummm... how do I use variables in a call to preg_replace?
This didn't work:
foreach($numarray as $num => $text)
{
$patterns[] = '/<ces>(.*?)\+$num(.*?)<\/ces>/';
$replacements[] = '<ces>$1<$text/>$2</ces>';
}
Yes, the $num
is preceeded by a plus sign. Yes, I want to "tag the $num as <$text/>
".
Your replacement pattern looks ok, but as you've used single quotes in the matching pattern, your $num variable won't be inserted into it. Instead, try
Also note that when building up a pattern from "unknown" inputs like this, it's usually a good idea to use preg_quote. e.g.
Though I guess given the variable name it's always numeric in your case.
Variables will only be expanded in strings declared with double quotes. So either use double quotes:
Or use string concatenation:
You should also take a look at
preg_quote
if your variables may contain regular expression meta characters.