从 PHP 中的字符串中删除所有连字符、特殊字符等

Remove all hyphens, special characters etc. from string in PHP

是否有通用的正则表达式删除 ALL 连字符、特殊字符等,所以我只会得到字母。

例如,正则表达式包含:,./<>?;':"|[]{}-=_+1234567890!@#$%^&*()|\ ~` 和所有连字符和特殊字符。

(不知道这算不算正则表达式,希望你能理解)

这应该有效:

$string = preg_replace("/[^a-zA-Z]+/", "", $string);

如果你想保留数字,使用这个:

$string = preg_replace("/[^a-zA-Z0-9]+/", "", $string);

如果您只需要获取字母,请删除所有非字母:

preg_replace('~\P{L}+~u', '', $input)

\P{L} 是一个 Unicode 属性 匹配除 Unicode 字母以外的所有字符。 参见regex demo

如果您还需要处理变音符号(即如果您需要保留它们),请使用

preg_replace('~[^\p{M}\p{L}]+~u', '', $input)

其中 \p{M} 匹配任何变音符号,[^\p{M}\p{L}]+ 匹配除字母和变音符号以外的 1 个或多个字符。

参见another demo