操纵preg_replaces的'replace'值

时间:2010-10-29 04:49:22

标签: php regex preg-replace

我正在尝试使用uppcase副本更改preg_replace的匹配值,但似乎无法弄清楚...

我试过了:

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

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

但没有工作。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

您可以将e修饰符用作:

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

Code In Action

答案 1 :(得分:1)

您可以使用回调函数和preg_replace_callback

E.g。 (另):

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