2010-10-29 50 views
0

我试图改变从preg_replace与uppcase副本匹配值,但不能似乎数字出来​​...操纵preg_replaces的“替换”值

我已经试过:

preg_replace("#\[name=((?:keywords)|(?:description))\]#is", "[name=" . strtoupper($1) . "]" ,$str) 

preg_replace("#\[name=((?:keywords)|(?:description))\]#is", "[name={strtoupper($1)}]" ,$str) 

但没有工作。

任何帮助,非常感谢。

回答

2

您可以使用e修改为:

preg_replace("#\[name=((?:keywords)|(?:description))\]#ise", "'[name='.strtoupper('\\1'). ']'" ,$str) 

Code In Action

+0

这有利于[preg_replace_callback(http://php.net因为PHP 5.5弃用/manual/en/function.preg-replace-callback.php) – Berend 2014-07-25 06:28:40

1

您可以使用回调函数和preg_replace_callback

E.g. (未经测试):

preg_replace(
    "#\[name=((?:keywords)|(?:description))\]#is", 
    create_function('$matches', 'return "[name=" . strtoupper($matches[1]) . "]"'), 
    $str 
)