假设我有以下字符串:
<a name="anchor" title="anchor title">
目前,我可以使用strpos和substr提取名称和标题,但我想做对了。 如何使用正则表达式执行此操作?如果我想从文本块中的许多标签中提取,该怎么办?
我试过这个正则表达式:
/name="([A-Z,a-z])'w+/g
但它也得到了 name=" 部分,我只想要值。
正
则表达式('S+)=["']?((?:.(?!["']?'s+(?:'S+)=|[>"']))+.)["']?
可用于提取所有属性
DOMDocument 示例:
<?php
$titles = array();
$doc = new DOMDocument();
$doc->loadHTML("<html><body>Test<br><a name="anchor" title="anchor title"></body></html>");
$links = $doc->getElementsByTagName('a');
if ($links->length!=0) {
foreach ($links as $a) {
$titles[] = $a->getAttribute('title');
}
}
?>
您评论说:"我实际上是在渲染页面之前解析数据,因此 DOM 是不可能的,对吧?
我们正在处理抓取的 HTML,因此我们使用这些函数构造一个 DOM,并像 XML 一样解析。
评论中的好例子:http://php.net/manual/en/domdocument.getelementsbytagname.php