2015-06-19 100 views
0
属性的删除值

说我有以下字符串:在PHP中使用正则表达式

<a name="anchor" title="anchor title"> 

目前,我可以用strpos和SUBSTR提取姓名和头衔,但我想这样做是正确的。我怎样才能用正则表达式来做到这一点?如果我想从一个文本块中抽取很多这些标签呢?

我试过这个表达式:

/name="([A-Z,a-z])\w+/g 

但它得到的名称=”部分,以及,我只想值

+0

可以做正则表达式,但会建议如果可能的话,更快的DOM阅读。你试过的代码是什么? – Twisty

+2

您不应该为这个特定用例使用正则表达式。我建议参考这些文档:http://php.net/manual/en/class.domdocument.php – lucasnadalutti

+1

如果你想正确使用HTML解析器。正则表达式不是解析HTML的明智方法。 – PiranhaGeorge

回答

0

正则表达式(\S+)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?可以用来提取所有属性

0

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