Preg_Match不会返回值,但是ereg会返回值

时间:2012-08-02 19:46:23

标签: php preg-match ereg

我为一个查找dmoz列表条目的php脚本创建了一个函数,不幸的是,它是使用ereg创建的,当脚本工作时,它会在每次使用时抛出“折旧”错误。所以我决定将它从ereg转换为preg,通过文档应该是preg_match,问题是,当值存在时,preg总是返回false。这是代码:

            function getDmoz ($url) {

        $url = "http://www.dmoz.org/search?q=".$url;
        $data = file_get_contents($url);
        if (ereg('<strong>Open Directory Sites</strong>', $data)) {

            $value = YES;

        } else {

            $value = NO;

        }

        return $value;

    }

这是工作代码。转换我相信它应该像这样

            function getDmoz ($url) {

        $url = "http://www.dmoz.org/search?q=".$url;
        $data = file_get_contents($url);
        if (preg_match('<strong>Open Directory Sites</strong>', $data)) {

            $value = YES;

        } else {

            $value = NO;

        }

        return $value;

    }

但由于某些原因,总是返回“否”,而ereg会成功找到它。谁能指出我在这里缺少什么?

提前致谢

2 个答案:

答案 0 :(得分:0)

您忘记在preg_match版本中添加分隔符字符。这是语法documentation

preg_match('!<strong>Open Directory Sites</strong>!', $data)

第一个字符是分隔符,你可以使用你想要的任何东西,历史上perl使用/但是当模式包含很多那些时,使用其他东西是有帮助的。

答案 1 :(得分:0)

试试这个:

if (preg_match('/<strong>Open Directory Sites<\/strong>/', $data)) {