从$ var中提取HTML的最佳方法是什么?
$ var的例子
$var = "<a href="http://stackoverflow.com/">Stack Overflow</a>"
Run Code Online (Sandbox Code Playgroud)
我想要
$var2 = "http://stackoverflow.com/"
Run Code Online (Sandbox Code Playgroud)
例如:preg_match();
还有什么?
而不是制作长而复杂的正则表达式,而是分步进行
$str = '<a href="http://stackoverflow.com/"> Stack Overflow</a>';
$str = preg_replace("/.*<a\s+href=\"/","",$str);
print preg_replace("/\">.*/","",$str);
Run Code Online (Sandbox Code Playgroud)
一种"非正则表达"的方式,使用爆炸
$str = '<a href="http://stackoverflow.com/"> Stack Overflow</a>';
$s = explode('href="',$str);
$t = explode('">',$s[1]);
print $t[0];
Run Code Online (Sandbox Code Playgroud)
如果您拥有的是有效的HTML字符串,则DOMDocument模块的loadHTML()函数将起作用,并且您可以非常轻松地导航结构。如果您有很多HTML可以使用,那么这是一个很好的方法。
$doc = new DOMDocument();
$doc->loadHTML('<a href="http://stackoverflow.com/">Stack Overflow</a>');
$anchors = $doc->getElementsByTagName('a');
foreach($anchors as $node) {
echo $node->textContent;
if ($node->hasAttributes()) {
foreach($node->attributes as $a) {
echo ' | '.$a->name.': '.$a->value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
产生以下内容:
Stack Overflow | href: http://stackoverflow.com/
Run Code Online (Sandbox Code Playgroud)