我试图做一个preg-replace模式来将文本“orderId”转换为“order-id”。Preg替换PHP的模式
$argumentName = "orderId";
$argumentName = preg_replace("/([A-Z])/e", "-strtolower($1)", $argumentName);
echo $argumentName;
该行的输出是“order0d”。为什么这不起作用?
我试图做一个preg-replace模式来将文本“orderId”转换为“order-id”。Preg替换PHP的模式
$argumentName = "orderId";
$argumentName = preg_replace("/([A-Z])/e", "-strtolower($1)", $argumentName);
echo $argumentName;
该行的输出是“order0d”。为什么这不起作用?
为什么要使用/e
?
$argumentName = strtolower(preg_replace("/([A-Z])/", "-$1", $argumentName));
这会在任何大写字母前放置一个破折号,然后降低整个字符串。
我真的不知道你的正则表达式如何与你的文本相关。这是你正在寻找的唯一情况吗?如果是这样的话,一些简单的字符串操作就足够了 – FailedDev 2012-03-11 12:57:29
'-'是[算术运算符](http://php.net/language.operators.arithmetic),'strtolower'是一个返回字符串的函数。你应该能够弄清楚其余的。 – Gumbo 2012-03-11 13:01:05
使用这样的正则表达式对我来说仍然没有意义。整个事情可以通过搜索我来代替,用-i替换。 – FailedDev 2012-03-11 13:14:00