我正在使用此正则表达式将歌曲名称格式化为url友好别名。它用连字符替换1个或多个连续的特殊字符和空白实例。

$alias = preg_replace("/([^a-zA-Z0-9]+)/", "-", trim(strtolower($name)));


这样做很好,所以如果歌曲名称为This is *is* a (song) NAME,它将创建别名this-is-a-song-name。但是,如果名称在*This is a song (name)开头或结尾有特殊字符,则会在每个结尾处创建-this-is-a-song-name-并创建连字符。

我该如何修改正则表达式以替换上面的内容,但用空空格替换第一个和最后一个特殊字符。

最佳答案

您需要进行两次更换。

$str = '*This is a song (name)';
$s   = preg_replace('~^[^a-zA-Z0-9]+|[^a-zA-Z0-9]+$~', '', $str);
echo preg_replace('~[^a-zA-Z0-9]+~', '-', $s);

关于php - 正则表达式用连字符替换特殊字符,但首尾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28859317/

10-13 07:58
查看更多