Php 删除除字母和#x27以外的所有字符<';,和'&燃气轮机';
如果我有一个字符串:Php 删除除字母和#x27以外的所有字符<';,和'&燃气轮机';,php,regex,Php,Regex,如果我有一个字符串: $string="5 < 3 is @true" $string=“5
$string="5 < 3 is @true"
$string=“5<3为@true”
我想去掉@(或任何非字母或数字字符),除了<和>
感谢您阅读使用:
$string = preg_replace('/[^<>]/', '', $string);
$string=preg_replace('/[^]/',''.$string);
REGEX
使用以下命令并替换为空字符串:
[^0-9a-z<> ]+
PHP
$re = "/[^0-9a-z<> ]+/i";
$str = "5 < 3 is @true";
$subst = "";
$result = preg_replace($re, $subst, $str);
$re=“/[^0-9a-z]+/i”;
$str=“5<3为@真”;
$subst=“”;
$result=preg_replace($re,$subst,$str);
正确的正则表达式如下所示:
/[^a-z<>]/gi
/[^a-z]/gi
要替换,请执行以下操作:
$string = preg_replace('/[^a-z<>]/gi', '', $string);
$string=preg_replace('/[^a-z]/gi',''$string);
工作原理:
引爆一个否定字符类(匹配组中不存在的所有字符)[^]
匹配从a-z
到a
z
匹配文字字符(它将匹配
)
表示匹配是大小写敏感的(使/…/i
也匹配a-z
)a-z
表示匹配为global/…/g
e
,它与PHP表达式匹配并有助于保持正确的语法),但标志gim
几乎无处不在。标志
m
表示
(句点或点字符)执行m多行匹配(这意味着换行符也匹配)。当
位于字符类内时,不需要此选项,因为在字符类内,它将与文本
字符匹配。这不会保留OP要求的字母。这会保留数字,OP只想保留字母和尖括号。@Unihedro OP消失了,当提供更多细节时,答案可能会改变…@Enessay感谢您的回答,效果很好!!!尝试提供更多的示例案例来澄清问题。包括输入和预期输出。感谢您添加有关正则表达式字符的信息@鲍勃,不客气。我已经添加了关于正则表达式的附加信息。要尝试它,您可以检查。
$string = preg_replace('/[^a-z<>]/gi', '', $string);