小于characer [<]打破preg_match_all

时间:2016-12-20 10:43:35

标签: php regex

我遇到了一个正则表达式的麻烦,我似乎无法弄清楚这种行为的原因。

$RGX = "~(\w+)\s*([=:<>])\s*(.*?(?=&&|\+|$))~";

$STR  = "date<something";

preg_match_all($RGX, $STR, $SearchParameters, PREG_SET_ORDER);

print_r($SearchParameters);

使用正则表达式时,如果输入字符串包含“小于”字符,则会出现的问题,如上例所示。

Array
(
    [0] => Array
        (
            [0] => date date
            [2] => <
            [3] => something
        )

)

1 个答案:

答案 0 :(得分:3)

我发现了它!

问题是我在浏览器中查看了结果,当然浏览器解释了“&lt;”字符作为新HTML对象的开头。血淋淋的地狱。

对参数执行foreach并使用htmlentities()显示正则表达式实际上正常工作。