这四个链接:
<img border="0" src="imagenes/flech.gif" width="6" height="8">
<a href="escuchar-baladas-de-Albano_Y_Romina_Power.html">Albano Y Romina Power</a><br>
<img border="0" src="imagenes/flech.gif" width="6" height="8">
<a href="escuchar-baladas-de-Armando_Manzanero.html">Armando Manzanero</a><br>
<a name="inicio21" href="musica-Merengue-de-Banda_Cuisillos.html">
<img border="0" src="imagenes/flech.gif" width="6" height="8">Banda Cuisillos</a><br>
<a href="Musica-Baladas-Alternativas.html">Baladas Alternativas</a><br>
我正在尝试捕获href值和三个链接的文本,排除第四个链接,换句话说我正试图得到这个:
escuchar-baladas-de-Albano_Y_Romina_Power.html Albano Y Romina Power
escuchar-baladas-de-Armando_Manzanero.html Armando Manzanero
musica-Merengue-de-Banda_Cuisillos.html Banda Cuisillos
我试图充分利用这三个第一个拥有imagenes/flech.gif
的事实,这样就省去了第四个,imagenes/flech.gif
不是同一个顺序的事情。 Here是我尝试解决问题的方法,我可以在href中找到它,但包括第四个。
感谢您的帮助
答案 0 :(得分:1)
你应该使用html解析器而不是正则表达式,试试这个:
<?php
$html = <<< EOF
<img border="0" src="imagenes/flech.gif" width="6" height="8">
<a href="escuchar-baladas-de-Albano_Y_Romina_Power.html">Albano Y Romina Power</a><br>
<img border="0" src="imagenes/flech.gif" width="6" height="8">
<a href="escuchar-baladas-de-Armando_Manzanero.html">Armando Manzanero</a><br>
<a name="inicio21" href="musica-Merengue-de-Banda_Cuisillos.html">
<img border="0" src="imagenes/flech.gif" width="6" height="8">Banda Cuisillos</a><br>
<a href="Musica-Baladas-Alternativas.html">Baladas Alternativas</a><br>
EOF;
$dom = new DOMDocument();
@$dom->loadHTML($html);
# Iterate over all the <a> tags
foreach($dom->getElementsByTagName('a') as $link) {
$url = $link->getAttribute('href');
$text = preg_replace('/[\r\n]/sm', '', $link->nodeValue); // remove line breaks
//if doesn't contain the banned words...
if (!preg_match('/(Baladas Alternativas|another text to filter)/sm', $text)) {
echo $url ." ".$text. "\n";
}
}
?>
<强> 样本 强>
http://ideone.com/5QX83x
<强> 资源 强>
http://htmlparsing.com/php.html
答案 1 :(得分:0)
此代码将获得前3个链接
$a='<img border="0" src="imagenes/flech.gif" width="6" height="8"><a href="escuchar-baladas-de-Albano_Y_Romina_Power.html">Albano Y Romina Power</a><br><img border="0" src="imagenes/flech.gif" width="6" height="8"><a href="escuchar-baladas-de-Armando_Manzanero.html">Armando Manzanero</a><br><a name="inicio21" href="musica-Merengue-de-Banda_Cuisillos.html"><img border="0" src="imagenes/flech.gif" width="6" height="8">Banda Cuisillos</a><br><a href="Musica-Baladas-Alternativas.html">Baladas Alternativas</a><br>';
preg_match_all('/<a.*?href="(.+?)">(?:<img.*\d+">)?(.+?)<\/a>/',$a,$match);
echo $match[1][0] . " " . $match[2][0]."<br>";
echo $match[1][1] . " " . $match[2][1]."<br>";
echo $match[1][2] . " " . $match[2][2]."<br>";