PHP:关于preg_replace()的问题

时间:2010-07-12 18:42:13

标签: php regex preg-replace

我发现了这个:

$text = preg_replace('/\W+/', '-', $text);

任何人都可以告诉我到底是做什么的?没有关于'/ \ W + /'的含义的信息..

此致

哈维

4 个答案:

答案 0 :(得分:2)

\W表示非字母数字字符,因此除了a-z,A-Z,0-9或下划线之外的任何其他字符。

这是正则表达式的标准,没有特定于Php。

这是一个测试正则表达式的好工具:

http://www.gskinner.com/RegExr/

如果您将\W+放在顶部的框中,您会看到它匹配的内容。

PS:这是另一种更简单,更清洁的工具,尽管可能不是功能丰富:

http://rubular.com/

它包含一个方便的快速参考,用于底部的正则表达式。

答案 1 :(得分:1)

看起来它取代了任何不是“单词字符”(字母,数字,下划线)的东西,并使它们成为连字符。

答案 2 :(得分:1)

preg系列函数使用Perl兼容正则表达式或PCRE。有nice cheat sheet for them here(PDF)。

\W表示“任何非单词字符”,+会将其限制为前一个字符中的一个或多个的匹配。 “单词字符”被定义为字母,数字和下划线,因此\W将匹配不属于这些字符的字符。

您的代码行将替换任何不带字符连字符的字符集。

答案 3 :(得分:0)

它记录在http://es2.php.net/manual/en/regexp.reference.backslash.php(从PHP手册的PCRE部分链接,其中解释了preg_replace)。