說我有以下字符串:在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