<p><a href="index.html"><img src="image.jpg" width="140"></a>this is the text part</p>
<img width='1' height='1' src='mf.gif' border='0'/>
<div class='related'>
<p>comments</p>
<ul>
<li><a href='123/comment1.html'>comment1</a></li>
<li><a href='123/comment2.html'>comment2</a></li>
<li><a href='123/comment3.html'>comment3</a></li>
<li><a href='123/comment4.html'>comment4</a></li>
<li><a href='123/comment5.html'>comment5</a></li>
</ul>
</div>
<div class='viral'>
<table border='0'>
<tr>
<td valign='middle'><a href="contact.html" target="_blank"><img src="email.gif" border="0" /></a></td>
<td valign='middle'><a href="book.html" target="_blank"><img src="book.gif" border="0" /></a></td>
</tr>
</table>
</div>
<br/><br/><a href="a2.htm"><img src="a2.img" border="0"/></a>有这样一段文字,如何正则取出
1 第一个P标签里的文字部分“this is the text part”?
2 #related UL LI 里面所有的 a 标签 URL “a href='123/comment1.html...” 以及所有的文字部分 “comment1...”谢谢。
<img width='1' height='1' src='mf.gif' border='0'/>
<div class='related'>
<p>comments</p>
<ul>
<li><a href='123/comment1.html'>comment1</a></li>
<li><a href='123/comment2.html'>comment2</a></li>
<li><a href='123/comment3.html'>comment3</a></li>
<li><a href='123/comment4.html'>comment4</a></li>
<li><a href='123/comment5.html'>comment5</a></li>
</ul>
</div>
<div class='viral'>
<table border='0'>
<tr>
<td valign='middle'><a href="contact.html" target="_blank"><img src="email.gif" border="0" /></a></td>
<td valign='middle'><a href="book.html" target="_blank"><img src="book.gif" border="0" /></a></td>
</tr>
</table>
</div>
<br/><br/><a href="a2.htm"><img src="a2.img" border="0"/></a>有这样一段文字,如何正则取出
1 第一个P标签里的文字部分“this is the text part”?
2 #related UL LI 里面所有的 a 标签 URL “a href='123/comment1.html...” 以及所有的文字部分 “comment1...”谢谢。
$str = <<<eof
<p><a href="index.html"><img src="image.jpg" width="140"></a>this is the text part</p>
<img width='1' height='1' src='mf.gif' border='0'/>
<div class='related'>
<p>comments</p>
<ul>
<li><a href='123/comment1.html'>comment1</a></li>
<li><a href='123/comment2.html'>comment2</a></li>
<li><a href='123/comment3.html'>comment3</a></li>
<li><a href='123/comment4.html'>comment4</a></li>
<li><a href='123/comment5.html'>comment5</a></li>
</ul>
</div>
<div class='viral'>
<table border='0'>
<tr>
<td valign='middle'><a href="contact.html" target="_blank"><img src="email.gif" border="0" /></a></td>
<td valign='middle'><a href="book.html" target="_blank"><img src="book.gif" border="0" /></a></td>
</tr>
</table>
</div>
<br/><br/><a href="a2.htm"><img src="a2.img" border="0"/></a>
eof;
echo '<pre />';
if(preg_match('/<div\s+class=\'related\'>(.*?)<\/div>/is',$str,$arr)){
// print_r($arr);
preg_match('/<p>(.*?)<\/p>/i',$arr[1],$subarr);
echo $subarr[1]."<br />" ;
preg_match_all('/<a\s+href=\'(.*?)\'>(.*?)<\/a>/i',$arr[1],$subarr);
print_r($subarr) ;
}输出:
commentsArray
(
[0] => Array
(
[0] => comment1
[1] => comment2
[2] => comment3
[3] => comment4
[4] => comment5
) [1] => Array
(
[0] => 123/comment1.html
[1] => 123/comment2.html
[2] => 123/comment3.html
[3] => 123/comment4.html
[4] => 123/comment5.html
) [2] => Array
(
[0] => comment1
[1] => comment2
[2] => comment3
[3] => comment4
[4] => comment5
))
preg_match("/<p>.*(?<=\>)([^>]*)<\/p>/isU",$str,$arr);echo $arr[1];
这个才对,>的方向弄反了
补上:
if(preg_match('/<p>.*(?<=\<\/a\>)(.*?)(?=\<\/p\>)/is',$str,$arr)){
print_r($arr);
}