不确定Regex是否可以执行此操作。 说,我有以下Html文本:
<ul id="item-list-1">
<li data-title="title1">
<a href="item1.html">hello 1</a>
</li>
<li data-title="title2">
<a href="item2.html">hello 2</a>
</li>
</ul>
我希望正则表达式只在具有特定ID的 ul 元素内找到所有href。 比如说,如果我想要 ul 中的所有href,id =&#34; item-list-1&#34;,则输出应为:
item1.html
item2.html
不应包括所有不在里面的href。
Regex能做到吗?
答案 0 :(得分:0)
正则表达式可以做到这一点,但它会很复杂并且不是100%可靠,更好的选项是PHP Simple HTML DOM Parser或PHP DOMDocument,例如:
$doc = new DOMDocument();
$doc->loadHTML( $html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD ); // or DOMDocument::loadHTMLFile
$xpath = new DOMXpath( $doc );
// A DOMNodeList implements the Traversable interface
$elements = array_map( function( $DOMAttr ) {
return $DOMAttr->value;
}, iterator_to_array( $xpath->query( "/ul[@id='item-list-1']//a/@href" ) ) );
// result: Array ( [0] => item1.html [1] => item2.html )