在 HTML 页面中是这样的一行:
<p><strong>State:</strong> <a href="/state/show/Ohio">Ohio</a></p>
我正在寻找的是一个正则表达式,它获取<strong>State:</strong>
和 EOL 之间的内容。
我已经尝试过了,但它不起作用,因为它忽略了</a></p>-"end"
preg_match('/<strong>State:(.*)<\/a><\/p>/',$html,$format);
在 HTML 页面中是这样的一行:
<p><strong>State:</strong> <a href="/state/show/Ohio">Ohio</a></p>
我正在寻找的是一个正则表达式,它获取<strong>State:</strong>
和 EOL 之间的内容。
我已经尝试过了,但它不起作用,因为它忽略了</a></p>-"end"
preg_match('/<strong>State:(.*)<\/a><\/p>/',$html,$format);
此正则表达式将找到<p><strong>State:</strong>
并返回从</strong>
行尾到第 1 组的所有内容。请注意,通过包含$
符号,您还需要包含m
强制正则表达式允许$
匹配行尾的选项。
使用您的示例文本:<p><strong>State:</strong> <a href="/state/show/Ohio">Ohio</a></p>
正则表达式:<p><strong>State:(</strong>.*?$)
第 1 组将有</strong> <a href="/state/show/Ohio">Ohio</a></p>
如果您真的只想在不包括 close 的强标签组之后直接捕获锚标签,请</p>
尝试以下操作:
正则表达式:<p><strong>State:</strong>\s*(.*?)</p>$
第 1 组将有<a href="/state/show/Ohio">Ohio</a>
从长远来看,使用正则表达式解析 HTML 可能不是最容易维护的事情。但是,如果您可以控制输入文本,则文本仍然非常简单,并且您愿意遇到常规表达式可能失败的周期性边缘情况,那么正则表达式将为您工作。
肥皂盒就够了。如果您已准备好研究 PHP 中的 html 解析,请查看以下示例:拉取页面上的所有锚标记并返回其 href 属性和链接文本:
$dom = new DOMDocument;
$dom->loadHTML(file_get_contents('http://www.YourPageHere.com/'));
// echo Links and their anchor text
echo '<pre>';
echo "Link\tAnchor\n";
foreach($dom->getElementsByTagName('a') as $link) {
$href = $link->getAttribute('href');
$anchor = $link->nodeValue;
echo $href,"\t",$anchor,"\n";
}
echo '</pre>';