我试图匹配这个特定的ul之间的所有东西,但我无法让它匹配任何东西。任何帮助将不胜感激。
<ul class="pagination_tabs" style="position: absolute; right: 14px; top: 17px;">
<li><a title="" href="#">1</a></li>
<li><a title="" href="#">2</a></li>
<li><a title="" href="#">3</a></li>
<li><a title="" href="#">4</a></li>
<li><a title="" href="#">5</a></li>
</ul>
if (preg_match_all("#<ul class=\"pagination_tabs\".*?>(.*?)</ul>#", $id_html, $matches)) {
echo "Found Match";
}
else{
echo "No Match Found";
}
答案 0 :(得分:3)
将XML / HTML与正则表达式匹配是您不想做的事情。相信我。
我建议您尝试使用SimpleXMLElement或DOMDocument
$doc = new DomDocument();
$doc->load('myfile.html');
$ul = $dom->documentElement->getElementById('pagination');
答案 1 :(得分:1)
快速猜测:文本中有换行符。这意味着您需要一个标记才能使.
匹配换行符。它是s
标志。
"abc\ndef" =~ /abc.+def/ -> no match
"abc\ndef" =~ /abc.+def/s -> match
但请注意不要使用正则表达式。解析HTML(或XML)应该使用这些格式的解析器来完成。
答案 2 :(得分:0)
正则表达式应该更像这样
/<ul class='pagination_tabs'.'[^>]*<\/ul>/i`
虽然,我会使用jQuery。
if($('ul.pagination_tabs li').length > 0){ alert 'Exists'; )