用于破折号的PHP preg_replace regexp

JRO*_*ROB 4 php preg-replace

我正在尝试替换字符串中不是字母,数字或短划线" - "的任何内容.

如何修改此行以包含短划线?

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

我只是把它插入那里吗?

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

Wir*_*one 11

你必须逃脱,-因为它是正则表达式的特殊字符:

$link = preg_replace('/[^a-z0-9\-]/', '', strtolower($_POST['link_name']));
Run Code Online (Sandbox Code Playgroud)


Nie*_*sol 6

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

-在课程结束时没有特殊意义.或者,用反斜杠逃避它.