是否删除PHP字符串中所有不匹配的字符?
我有一个文本,我想从中删除所有不是下面的字符 所需字符=是否删除PHP字符串中所有不匹配的字符?,php,regex,Php,Regex,我有一个文本,我想从中删除所有不是下面的字符 所需字符= 0123456789!&',-./abcdefghijklmnopqrstuvwxyz\n 最后一个是我确实希望保留的\n(换行符) $string = 'This is anexample $tring! :)'; $string = preg_replace('/[^0-9!&\',\-.\/a-z\n]/', '', $string); echo $string; // hisisanexampletring!
0123456789!&',-./abcdefghijklmnopqrstuvwxyz\n
最后一个是我确实希望保留的\n(换行符)
$string = 'This is anexample $tring! :)';
$string = preg_replace('/[^0-9!&\',\-.\/a-z\n]/', '', $string);
echo $string; // hisisanexampletring!
^这是区分大小写的,因此大写字母T从字符串中删除。要同时允许大写字母,
$string=preg\u replace('/[^0-9!&',\-.\/A-Za-z\n]/',''$string)
要匹配除所列字符以外的所有字符,请使用:
此处用于转义某些特殊字符,以便将它们解释为文字字符
您还可以使用字符范围来表示列出的字符:
$pattern = "/[^0-9!&',-.\\/a-z\n]/";
在这种情况下,-.中的文本-
是否转义并不重要。因为,-.
被解释为介于,
(0x2C)到,
(0x2E)之间的字符范围,该字符范围已经包含了介于两者之间的-
(0x2D)
然后可以删除与以下内容匹配的字符:
字符类中的破折号必须是第一个或最后一个字符,或者转义。否则它将指示一个范围。@kemp-不知道我为什么错过了它!我已经编辑过了,谢谢你指出:)@kemp:那不太对。在其他几种情况下,不需要转义范围指示器,因为它不是字符范围的一部分:
[-]
(仅-
),[a-b-c]
(a
-b
,-
,c
),或[\d-.]
(\d
,-
,)。
$pattern = "/[^0-9!&',-.\\/a-z\n]/";
$output = preg_replace($pattern, "", $str);