Ummm... how do I use variables in a call to preg_replace?
This didn\'t work:
foreach($numarray as $num => $text)
{
$patterns[] = \'/
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
$patterns[] = '/(.*?)\+'.$num.'(.*?)<\/ces>/';
$replacements[] = '$1<'.$text.'/>$2 ';
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.
$patterns[] = '/(.*?)\+'.preg_quote($num).'(.*?)<\/ces>/';
Though I guess given the variable name it's always numeric in your case.