日期:2014-05-16  浏览次数:20476 次

求助: 加了个<就无法匹配到结果了

$str='adfefdfdf<if codition=("{$name} eq 1")>2014/5/2fafefdfef。';
preg_match_all('#if\s+codition=(.*)\s*>#U',$str,$arr);
echo '<pre>';
print_r($arr);

没有<得到的结果是

Array
(
    [0] => Array
        (
            [0] => if codition=("{$name} eq 1")>
        )

    [1] => Array
        (
            [0] => ("{$name} eq 1")
        )

)


有<

$str='adfefdfdf<if codition=("{$name} eq 1")>2014/5/2fafefdfef。';
preg_match_all('#<if\s+codition=(.*)\s*>#U',$str,$arr);
echo '<pre>';
print_r($arr);

的结果

Array
(
    [0] => Array
        (
            [0] => 
        )

    [1] => Array
        (
            [0] => ("{$name} eq 1")
        )

)


为什么加了个<就无法匹配到结果了呢,<也不是元字符啊,谁能解答下。

------解决方案--------------------
你在浏览器中看一下源文件就知道了

<if codition=("{$name} eq 1")> 被浏览器解释为 html 标记了
用 pre 是阻止不了的,要用 xmp 才行