猿问

PHP函数只保留az 0-9并用“-”替换空格(包括正则表达式)

我想编写一个PHP函数,只保留az(保留所有字母小写)0-9和“-”,并用“-”替换空格。


这是我到目前为止所拥有的:


      ...

      $s = strtolower($s);

      $s = str_replace(' ', '-', $s);

      $s = preg_replace("/[^a-z0-9]\-/", "", $s);

但我注意到它保留了“?” (问号)我希望它不会保留我没有注意到的其他字符。


我怎样才能纠正它以获得预期的结果?


(我对正则表达式不太熟悉,尤其是在切换语言/工具时。)


胡说叔叔
浏览 98回答 1
1回答

牛魔王的故事

$s = strtolower($s);$s = str_replace(' ', '-', $s);$s = preg_replace("/[^a-z0-9\-]+/", "", $s);[] 括号中没有 \- 。看来你也可以使用 - 而不是 \- ,两者都对我有用。您需要添加搜索字符的乘数。在本例中,我使用了+。加号表示前一个元素出现一次或多次。
随时随地看视频慕课网APP
我要回答