preg_replace 返回 null,我的 RegExp 看不到错误
preg_replace returning null, can't see an error with my RegExp
我正在尝试从字符串中去除所有非数字、非单词字符(连字符除外)以创建 URI 存根。我有以下代码:
$urlPrefix = strtolower($this->urlPrefix.(substr($this->urlPrefix, -1) == '-' ? '' : '-'));
$urlPrefix = preg_replace('#\s+#', '-', $urlPrefix);
var_dump($urlPrefix);
$urlPrefix = preg_replace('#[^\d\w\s-]#g', '', $urlPrefix);
var_dump($urlPrefix); exit;
如果我设置 $this->urlPrefix = "Test replace$%^*";
,那么第一个 var_dump($urlPrefix)
按预期输出 test-replace$%^*-
,但第二个转储输出 NULL
,但我看不出任何错误使用我的正则表达式,有人可以帮助我吗?为什么 preg_replace
出错?
g
不能与 preg_replace
一起使用。在这里,这个 sample code 工作正常:
<?php
$urlPrefix = "test-replace$%^*-";
$urlPrefix = strtolower($urlPrefix.(substr($urlPrefix, -1) == '-' ? '' : '-'));
$urlPrefix = preg_replace('#\s+#', '-', $urlPrefix);
var_dump($urlPrefix);
$urlPrefix = preg_replace('#[^\d\w\s-]#', '', $urlPrefix);
var_dump($urlPrefix);
exit;
?>
输出:
string(17) "test-replace$%^*-"
string(13) "test-replace-"
我正在尝试从字符串中去除所有非数字、非单词字符(连字符除外)以创建 URI 存根。我有以下代码:
$urlPrefix = strtolower($this->urlPrefix.(substr($this->urlPrefix, -1) == '-' ? '' : '-'));
$urlPrefix = preg_replace('#\s+#', '-', $urlPrefix);
var_dump($urlPrefix);
$urlPrefix = preg_replace('#[^\d\w\s-]#g', '', $urlPrefix);
var_dump($urlPrefix); exit;
如果我设置 $this->urlPrefix = "Test replace$%^*";
,那么第一个 var_dump($urlPrefix)
按预期输出 test-replace$%^*-
,但第二个转储输出 NULL
,但我看不出任何错误使用我的正则表达式,有人可以帮助我吗?为什么 preg_replace
出错?
g
不能与 preg_replace
一起使用。在这里,这个 sample code 工作正常:
<?php
$urlPrefix = "test-replace$%^*-";
$urlPrefix = strtolower($urlPrefix.(substr($urlPrefix, -1) == '-' ? '' : '-'));
$urlPrefix = preg_replace('#\s+#', '-', $urlPrefix);
var_dump($urlPrefix);
$urlPrefix = preg_replace('#[^\d\w\s-]#', '', $urlPrefix);
var_dump($urlPrefix);
exit;
?>
输出:
string(17) "test-replace$%^*-"
string(13) "test-replace-"