我正在使用以下preg_match来获取网页的[title]标签。
// get <title>
$search = "/\<title\>(.*)\<\/title>/i";
preg_match($search, $url_contents, $result);
$title = $result[1];
现在我想搜索那个[title]标签,所以我写了这个:
// search for $keyword
$keyword_slash = "/". $keyword ."/";
preg_match_all($keyword_slash, $title, $result);
print_r($result); // just for testing
我添加了$ keyword_slash,因为它给了我一个错误。然而,这不起作用。它总是返回一个空数组,即使我知道$ keyword位于[title]内。
答案 0 :(得分:3)
你的正则表达式首先preg_match似乎不正确。它应该是:
$search = "~<title>([^<]*)</title>~i";
但是我必须提醒你,使用像这样的正则表达式提取标题非常容易出错,你应该考虑使用DOM解析器来实现它。
更新:以下是针对网页标题建议的DOM解析:
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($content);
$xpath = new DOMXPath($dom);
$title = $xpath->query("//head/title")->item(0)->nodeValue;
printf("title=[%s]\n", $title);