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
  • /…/g
    表示匹配为global
最后2个被称为标志,用于更改行为

多个引擎可能有其他标志(如PHP的标志
e
,它与PHP表达式匹配并有助于保持正确的语法),但标志
gim
几乎无处不在。

标志
m
表示
(句点或点字符)执行m多行匹配(这意味着换行符也匹配)。当
位于字符类内时,不需要此选项,因为在字符类内,它将与文本
字符匹配。

这不会保留OP要求的字母。这会保留数字,OP只想保留字母和尖括号。@Unihedro OP消失了,当提供更多细节时,答案可能会改变…@Enessay感谢您的回答,效果很好!!!尝试提供更多的示例案例来澄清问题。包括输入和预期输出。感谢您添加有关正则表达式字符的信息@鲍勃,不客气。我已经添加了关于正则表达式的附加信息。要尝试它,您可以检查。
$string = preg_replace('/[^a-z<>]/gi', '', $string);