从 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。
是否有通用的正则表达式删除 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。