有文本内容:
<li><span class="end">44451</span><span class="num">1</span><a href="http://vip.book.sina.com.cn/book/index_100324.html" target="_blank">戴军:食色男女</a></li>现在想取 44451 和 戴军:食色男女 两项我的表达式:preg_match_all('!class="end">([0-9]*)(?:.*[>]{4})(.*)</a>!', $val, $sub_match);
该表达式匹配不到。(?:.*[>]{4})这里应该是有问题,但不知道怎么写,高手帮个忙了。
<li><span class="end">44451</span><span class="num">1</span><a href="http://vip.book.sina.com.cn/book/index_100324.html" target="_blank">戴军:食色男女</a></li>现在想取 44451 和 戴军:食色男女 两项我的表达式:preg_match_all('!class="end">([0-9]*)(?:.*[>]{4})(.*)</a>!', $val, $sub_match);
该表达式匹配不到。(?:.*[>]{4})这里应该是有问题,但不知道怎么写,高手帮个忙了。
所以用个笨方法
/class="end">(\d+).+?>([^\/]+?)<\/a>/is
$val = '<li> <span class="end">44451222 </span> <span class="num">1 </span> <a href="http://vip.book.sina.com.cn/book/index_100324.html" target="_blank">戴军:食色男女 </a> </li>';
preg_match_all('!<span\s+class="end">([0-9][^<]*)<.*>(.[^<]*)</a>!', $val, $sub_match);
print_r($sub_match);
//out put:Array ( [0] => Array ( [0] => 44451222 1 戴军:食色男女 ) [1] => Array ( [0] => 44451222 ) [2] => Array ( [0] => 戴军:食色男女 ) )
点号代表任意字符,加号是至少一个字符(>=1,星号任意多个字符(>=0),再加上个问号即为非贪婪搜索(即从左向右处理字符串),如果没有问号即为贪婪搜索(从右向左处理字符串)。
单个问号为0个或1个(=0 or =1)。
点号是字符,加、星、问号为字符的个数。