Ste*_*eve 11 php variables preg-replace
嗯...如何在调用preg_replace时使用变量?
这不起作用:
foreach($numarray as $num => $text)
{
$patterns[] = '/<ces>(.*?)\+$num(.*?)<\/ces>/';
$replacements[] = '<ces>$1<$text/>$2</ces>';
}
Run Code Online (Sandbox Code Playgroud)
是的,$num前面是一个加号.是的,我想" tag the $num as <$text/>".
Pau*_*xon 14
您的替换模式看起来没问题,但是由于您在匹配模式中使用了单引号,因此不会将$ num变量插入其中.相反,试试吧
$patterns[] = '/<ces>(.*?)\+'.$num.'(.*?)<\/ces>/';
$replacements[] = '<ces>$1<'.$text.'/>$2</ces>';
Run Code Online (Sandbox Code Playgroud)
还要注意,当从这样的"未知"输入构建模式时,使用preg_quote通常是个好主意.例如
$patterns[] = '/<ces>(.*?)\+'.preg_quote($num).'(.*?)<\/ces>/';
Run Code Online (Sandbox Code Playgroud)
虽然我猜这个变量名称在你的情况下总是数字.
Gum*_*mbo 13
变量只会在用双引号声明的字符串中展开.所以要么使用双引号:
$patterns[] = "/<ces>(.*?)\\+$num(.*?)<\\/ces>/";
$replacements[] = "<ces>$1<$text/>$2</ces>";
Run Code Online (Sandbox Code Playgroud)
或者使用字符串连接:
$patterns[] = '/<ces>(.*?)\+'.$num.'(.*?)<\/ces>/';
$replacements[] = '<ces>$1<'.$text.'/>$2</ces>';
Run Code Online (Sandbox Code Playgroud)
您还应该查看preg_quote您的变量是否包含正则表达式元字符.
| 归档时间: |
|
| 查看次数: |
23595 次 |
| 最近记录: |