用于提取元数据的正则表达式

时间:2015-07-03 06:24:07

标签: php regex

我使用cURL检索了html页面,现在我想从元数据中提取特定的元内容。即<meta name="ids" content="123nsdfsdfAS">

我做了如下:

function file_get_contents_curl($url)
{
$agent= 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0';

$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

$data = curl_exec($ch);
curl_close($ch);

return $data;
}

$html = file_get_contents_curl("http://example.com");

因此,我想使用<meta name="ids" content="123nsdfsdfAS">$html或与任何函数和正则表达式相关的preg_match_all提取特定的元内容,即preg_match。我写了一个正则表达式,但这不好,所以我在这里没有提到。

3 个答案:

答案 0 :(得分:1)

嗯,这里很容易:

/<meta[^>]+>/

将匹配任何元标记。

/<meta name="ids"[^>]+>/

仅匹配名称为ids的元标记。

如果您只想要此内容

/<meta name="ids" content="([^"]+)">/

答案 1 :(得分:0)

试试这个<meta name="ids"(.*?)>。简单方法... $ 1将为您提供属性

答案 2 :(得分:0)

在正则表达式下匹配元素

<meta(?: [^>]+)?>

ex:
<meta>
<meta id="12"> any attribute

<meta(?: [^>]+)? id="([^"]*)"[^>]*>

ex:
<meta id="123">
<meta id="123" content="cnt">