-2

我正在尝试匹配这个特定 ul 之间的所有内容,但我无法让它匹配任何内容。任何帮助,将不胜感激。

HTML

<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>

PHP

if (preg_match_all("#<ul class=\"pagination_tabs\".*?>(.*?)</ul>#", $id_html, $matches)) { 
    echo "Found Match";
}
else{
    echo "No Match Found";
}
4

3 回答 3

3

将 XML/HTML 与 Regexp 匹配是您不想做的事情。相信我。

我建议你尝试使用SimpleXMLElementDOMDocument

$doc = new DomDocument();
$doc->load('myfile.html');
$ul = $dom->documentElement->getElementById('pagination');
于 2013-05-26T20:29:52.937 回答
1

快速猜测:文本中有换行符。这意味着您需要一个标志来.匹配换行符。它的s旗帜。

"abc\ndef" =~ /abc.+def/  -> no match
"abc\ndef" =~ /abc.+def/s -> match

看看手册中的这个评论

但是请考虑根本不使用正则表达式。应该使用这些格式的解析器来解析 HTML(或 XML)。

于 2013-05-26T20:34:53.190 回答
0

正则表达式应该看起来更像这样

/<ul class='pagination_tabs'.'[^>]*<\/ul>/i`

不过,我会为此使用 jQuery。

if($('ul.pagination_tabs li').length > 0){ alert 'Exists'; )
于 2013-05-26T20:37:08.863 回答