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

删除PHP中字符串中的所有连字符、特殊字符等,php,regex,string,special-characters,str-replace,Php,Regex,String,Special Characters,Str Replace,是否有一个通用的正则表达式可以删除所有的连字符、特殊字符等,所以我只会得到字母 例如,包含以下内容的正则表达式:,./?;':“|[]{}-=\uU+1234567890!@$%^&*()以及所有连字符和特殊字符 (不知道这是否称为正则表达式,但我希望您能理解)这应该可以: $string = preg_replace("/[^a-zA-Z]+/", "", $string); 如果要保留数字,请使用此数字: $string = preg_replace("/[^a-zA-Z0-9]+/",

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

例如,包含以下内容的正则表达式:,./?;':“|[]{}-=\uU+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字母以外的所有字符。请参阅。

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

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


请参见

您是否只想获取
a-zA-Z
而不想获取数字?regexp作为白名单:
[a-Z]
使用
/i
开关不区分大小写,如果您只想要字母(如果您想要非ASCII字母,那么就这么说),为什么不在
stru回复(“/your\u removation\u list/”,“$str”)中尝试此操作
@FrayneKonok这意味着OP需要做大量的
str\u replace()
,这比
preg\u replace()要好
在本例中case@Chay22,OP没有提到他需要多少字符,所以我给出了这个建议。几乎有效,但它不删除-连字符仍然不删除/-和@MaartenWolfsen:在正则表达式开始使用之前,你应该显示你的代码,因为它处理一些事情。这似乎也删除了字母,现在它什么也没有显示:p
 i
i开关不区分大小写i开关?那是什么?@MaartenWolfsen-i开关将使用
$string=preg\u replace(“/[^a-z]+/i“,”,“,$string);
(注意在regexp中终止
/
后的
i
,这表示对regexp parserNo“开关”不区分大小写)(称为修饰语)是
\P{L}
preg_replace('~[^\p{M}\p{L}]+~u', '', $input)