2015-06-19 67 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