我为一个查找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会成功找到它。谁能指出我在这里缺少什么?
提前致谢
答案 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)) {