我正在尝试替换字符串中不是字母,数字或短划线“ - ”的任何内容。
如何修改此行以包含短划线?
$link = preg_replace('/[^a-z0-9]/', "", strtolower($_POST['link_name']));
我只是将它插入那里吗?
$link = preg_replace('/[^a-z0-9-]/', "", strtolower($_POST['link_name']));
答案 0 :(得分:10)
你必须逃避-
,因为它是正则表达式的特殊字符:
$link = preg_replace('/[^a-z0-9\-]/', '', strtolower($_POST['link_name']));
答案 1 :(得分:6)
只需将-
添加到课程的末尾([^a-z0-9-]
)。
-
在课程结束时没有特殊含义。或者,用反斜杠逃避它。