一尘不染

从字符串中删除所有特殊字符

php

我面临网址问题,我希望能够转换标题,该标题可以包含任何内容,并去除所有特殊字符,因此它们仅包含字母和数字,当然我想用连字符替换空格。

怎么做?我听说过很多关于正则表达式(regex)的使用…


阅读 250

收藏
2020-05-26

共1个答案

一尘不染

这应该可以满足您的需求:

function clean($string) {
   $string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.

   return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
}

用法:

echo clean('a|"bc!@£de^&$f g');

将输出: abcdef-g

编辑:

嘿,只是一个简单的问题,如何防止多个连字符彼此相邻?并将它们替换为1?

function clean($string) {
   $string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
   $string = preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.

   return preg_replace('/-+/', '-', $string); // Replaces multiple hyphens with single one.
}
2020-05-26