请帮我从此标记中获取链接和文字。必须包含<h3 class="post-title entry-title">
,因为我需要来自该特定代码的链接。
<h3 class="post-title entry-title">
<a href="http://mymplogk.blogspot.com/2011/03/h_25.html">Text</a>
</h3>
到目前为止,我的工作是
<?php
$string = file_get_contents('http://www.domain.com');
$regex_pattern = "";
unset($matches);
preg_match_all($regex_pattern, $string, $matches);
foreach ($matches[0] as $paragraph) {
echo $paragraph;
echo "<br>";
}
?>
提前谢谢
答案 0 :(得分:2)
Don't使用正则表达式来解析HTML。这是个坏主意。使用HTML / XML解析器。由于您使用的是PHP,因此可以尝试使用PHP Tidy或DOMDocument。它会让你的生活更轻松
。答案 1 :(得分:0)
我建议你使用DOMDocument和XPath从页面中提取url而不是使用regexp。
本教程为您介绍如何使用xpath和dom。 http://www.merchantos.com/blog/makebeta/php/scraping-links-with-php#php_dom
编辑: 如果你在firefox中使用firebug-addon,你可以在页面上检查你的元素,并复制它的xpath。
答案 2 :(得分:0)
答案 3 :(得分:0)
按照您的示例,此正则表达式将找到“http://mymplogk.blogspot.com/2011/03/h_25.html”和“文本”:
$regex_pattern = '/<h3[^>]+class\s*=\s*[\'"]post-title entry-title[\'"][^>]*>.*?<a[^>]+href\s*=\s*"([^"]+)"[^>]*>([^<]*)</s';
这匹配h3标记周围的单引号或双引号,并允许h3标记中的其他属性以及属性和值之间的可选空格。它还在$ string中多次匹配,例如
$string = '<h3 class="post-title entry-title">
<a href="http://mymplogk.blogspot.com/2011/03/h_25.html">Text</a>
</h3>
<p>doot</p>
<h3 class=\'post-title entry-title\'>
<a href="http://www.google.com/">More Text</a>
</h3>';