说我有以下字符串:在PHP中使用正则表达式
<a name="anchor" title="anchor title">
目前,我可以用strpos和SUBSTR提取姓名和头衔,但我想这样做是正确的。我怎样才能用正则表达式来做到这一点?如果我想从一个文本块中抽取很多这些标签呢?
我试过这个表达式:
/name="([A-Z,a-z])\w+/g
但它得到的名称=”部分,以及,我只想值
说我有以下字符串:在PHP中使用正则表达式
<a name="anchor" title="anchor title">
目前,我可以用strpos和SUBSTR提取姓名和头衔,但我想这样做是正确的。我怎样才能用正则表达式来做到这一点?如果我想从一个文本块中抽取很多这些标签呢?
我试过这个表达式:
/name="([A-Z,a-z])\w+/g
但它得到的名称=”部分,以及,我只想值
正则表达式(\S+)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?
可以用来提取所有属性
DOM文档例如:
<?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');
}
}
?>
你说:“我其实是在页面呈现之前解析数据是不可能的,对吧?“
我们正在处理刮掉的HTML,所以我们用这些函数构造一个DOM并像XML一样进行解析。
在这里评论很好的例子:http://php.net/manual/en/domdocument.getelementsbytagname.php
可以做正则表达式,但会建议如果可能的话,更快的DOM阅读。你试过的代码是什么? – Twisty
您不应该为这个特定用例使用正则表达式。我建议参考这些文档:http://php.net/manual/en/class.domdocument.php – lucasnadalutti
如果你想正确使用HTML解析器。正则表达式不是解析HTML的明智方法。 – PiranhaGeorge