我正在构建一些需要用户输入条件的内容,然后将用PHP对其进行解析。我想构建一个preg_replace,将=替换为==,但==保持不变。
示例
a=b => a==b
a==b => a==b
a = b => a == b
a == b => a == b
因此,基本上,如果用户忘记条件需要==而不是=,则系统也会允许这样做。
答案 0 :(得分:3)
您可以使用此正则表达式,
(?<![=!])=(?![=!])
确保仅在=
之前或之后没有=
的情况下选择==
,并用$arr = array("a=b", "a==b", "a = b", "a == b", "a!=b");
foreach($arr as $s) {
echo $s, ' --> ', preg_replace('/(?<![=!])=(?![=!])/', '==', $s) , "\n";
}
代替它
示例PHP代码,
a=b --> a==b
a==b --> a==b
a = b --> a == b
a == b --> a == b
a!=b --> a!=b
打印
{{1}}
答案 1 :(得分:2)
您可以通过执行以下操作获得所需的结果:
$string = "a == b" ;
$string = str_replace('==', '=', $string);
$string = str_replace('=', '==', $string);
var_dump($string);
通过将所有==
替换为=
,然后将所有=
替换为==
答案 2 :(得分:1)
另一种选择是在后面使用正向断言来断言左侧是字字符\w
还是空白字符\s
(?<=[\w\s])=+
例如:
$result = preg_replace('/(?<=[\w ])=+/', '==', $str)