说我是否有字符串:
$string="5 < 3 is @true"
我想摆脱@(或任何非字母或数字字符)除了&lt;和&gt;。
感谢您阅读
答案 0 :(得分:1)
<强> REGEX 强>
使用以下内容并替换为空字符串:
[^0-9a-z<> ]+
并使用i
修饰符使其适用于大写字母(不区分大小写匹配)
<强>解释强>
[^0-9a-z<> ]+ any character except: '0' to '9', 'a' to'z', '<', '>', ' '
(1 or more times(matching the most amount possible))
<强> PHP 强>
$re = "/[^0-9a-z<> ]+/i";
$str = "5 < 3 is @true";
$subst = "";
$result = preg_replace($re, $subst, $str);
答案 1 :(得分:1)
正确的正则表达式如下:
/[^a-z<>]/gi
要替换,请执行以下操作:
$string = preg_replace('/[^a-z<>]/gi', '', $string);
工作原理:
[^]
引爆否定字符类(匹配 isn&#39; t 在组中的所有内容)a-z
匹配a
到z
<>
与文字字符匹配(它将匹配<
或>
)/.../i
表示匹配为 i nsensitive(使a-z
匹配A-Z
)/.../g
表示匹配 g lobal 最后2个称为标志,用于更改行为。
多个引擎可能有其他标志(如PHP的标志e
,它与PHP表达式匹配并有助于保持正确的语法),但标志gim
几乎无处不在。
标记m
表示.
(句点或点字符)执行 m 最后一行匹配(这意味着新行也匹配)。 .
位于字符类中时不需要这样做,因为在字符类中,它将匹配文字.
字符。
答案 2 :(得分:0)
使用:
$string = preg_replace('/[^<>]/', '', $string);