6

我正在尝试替换字符串中不是字母、数字或破折号“-”的任何内容。

如何修改此行以包含破折号?

$link = preg_replace('/[^a-z0-9]/', "", strtolower($_POST['link_name']));

我只是把它插进去吗?

$link = preg_replace('/[^a-z0-9-]/', "", strtolower($_POST['link_name']));
4

2 回答 2

16

您必须转义-,因为它是正则表达式的特殊字符:

$link = preg_replace('/[^a-z0-9\-]/', '', strtolower($_POST['link_name']));
于 2012-06-04T13:12:36.130 回答
9

只需添加-到类的末尾 ( [^a-z0-9-])。

-在课程结束时没有特殊含义。或者,用反斜杠转义它。

于 2012-06-04T13:10:28.873 回答