[英]Simple problem with regex pattern
请帮我从这个标签中获取链接和文字。 <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>";
}
?>
先感谢您
不要使用正则表达式来解析HTML。 这是个坏主意。 使用HTML / XML解析器。 由于您使用的是PHP,因此可以尝试使用PHP Tidy或DOMDocument 。 它会让你的生活更轻松。
我建议你使用DOMDocument和XPath从页面中提取url而不是使用regexp。
本教程为您提供了一些如何使用xpath和dom的初学者。 http://www.merchantos.com/blog/makebeta/php/scraping-links-with-php#php_dom
编辑:如果你在firefox中使用firebug-addon,你可以在页面上检查你的元素,并复制它的xpath。
按照你的例子,这个正则表达式将找到“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>';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.