PHP的Preg_replace模式

时间:2012-03-11 12:53:49

标签: php regex preg-replace

我试图制作一个preg-replace模式,将文本“orderId”转换为“order-id”。

$argumentName = "orderId";
$argumentName = preg_replace("/([A-Z])/e", "-strtolower($1)", $argumentName);
echo $argumentName;

此行的输出为“order0d”。为什么这不起作用?

2 个答案:

答案 0 :(得分:2)

由于您指定替换字符串是表达式,因此:

strtolower($1)

'i'(应该是),而且:

-strtolower($1)

-'i'(“否定'i'”),强制字符串'i'被解释为数字 - 0

你想要的是

$argumentName = preg_replace("/([A-Z])/e", "'-' . strtolower($1)", $argumentName);

连接字符串'-''i'

答案 1 :(得分:1)

为什么要使用/e

$argumentName = strtolower(preg_replace("/([A-Z])/", "-$1", $argumentName));

这会在任何大写字母前放置一个破折号,然后小写整个字符串。