Meta关键字和描述REG EX问题

时间:2011-06-24 12:40:52

标签: php regex

我正在编写一个程序来从网站中提取元信息。

我需要编写一些正则表达式来拉取内容标记之间的文本。

$find = "<meta\s+name=['\"]??keywords['\"]??\s+content=['\"]??(.+)['\"]??\s*\/?>";

这适用于像这样编写的元关键字:

<meta name="keywords" content="keyword, keyword, keyword" /> or like so
<meta name="keywords" content="keyword, keyword, keyword">

BuT我想将其翻转,以便能够以这种格式在内容标签之间找到文本:

<meta content="keyword, keyword, keyword" name="keywords" /> or like so
<meta content="keyword, keyword, keyword" name="keywords" >

有人帮忙吗?干杯

3 个答案:

答案 0 :(得分:2)

为此,您还可以使用get_meta_tags() - 内置PHP函数,从网站(或已下载的文件)中提取<meta>标记属性:

$tags = get_meta_tags('http://www.example.com/');
print_r($tags);

答案 1 :(得分:1)

试试这个:

<meta[^>]*content="(?<keyword>[^"]*)"[^>]*/?>

结果: enter image description here

答案 2 :(得分:1)

您也可以使用PHP DOm

$doc=new DOMDocument();
$doc->loadHTML($htmlcontent);
$xpath= new DOMXPath($doc);
$nodelist=$xpath->query('//meta[@name='keywords']/@content');
foreach($nodelist as $node)
  echo $node->nodeValue;

使用regexp大部分时间都可以工作,但它无法安全地处理任何HTML内容。