我试图从字符串中删除所有非数字,非单词字符(连字符除外)以创建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
出错?
答案 0 :(得分:1)
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-"