我有一個HTML輸出,我從一個RSS源拉動,這是somethig這樣的:如何從PHP中的字符串獲取html標記?
<div>
<p>
Some text
</p>
<iframe src="http://www.source.com"></iframe>
</div>
的問題是,我只需要iframe標籤的ATTR「SRC」,有什麼辦法獲得它與PHP?正則表達式可能?
在此先感謝!
我有一個HTML輸出,我從一個RSS源拉動,這是somethig這樣的:如何從PHP中的字符串獲取html標記?
<div>
<p>
Some text
</p>
<iframe src="http://www.source.com"></iframe>
</div>
的問題是,我只需要iframe標籤的ATTR「SRC」,有什麼辦法獲得它與PHP?正則表達式可能?
在此先感謝!
我不是正則表達式的專家,但一個替代辦法是對"
商標使用explode
並獲得array[1]
這樣的:
$rssFeed = '<div>
<p>
Some text
</p>
<iframe src="http://www.source.com"></iframe>
</div>';
$rssArray = explode('"', $rssFeed);
echo $rssArray[1];
這需要你的RSS提要很但一致的是,如果「某些文本」部分包含"
標記,則會發生混亂,並且您會得到錯誤的字符串。
您可以通過陣列查看以http
或www
開頭的所有內容來解決錯誤,但同樣需要非常一致的RSS提要,因此您必須爲自己判斷是否可以完成足夠好的工作。
如果你一直想起來了,你上面列出的數據,你可以使用一個簡單的字符串,使用src="
和"><iframe
字符串位置來指定子串你想要的:
$html = '<div><p>Some text</p><iframe src="http://www.source.com"></iframe></div>';
$start = strpos($html, 'src="') + 5;
$length = strpos($html, '"></iframe') - $start;
$src = substr($html, $start, $length);
echo $src;
編輯 - 修復代碼並分成多行。這可能很容易成爲單線,但 - 認爲如果我分成多行,就會更容易理解。
你可以用一個小命令行perl腳本解析這個輸出。這可以是相當強大的,這取決於你製作正則表達式的一般程度。
例如,
$command = "echo your_html_output | perl -pe 's/src=\"(.*)\"/$1/'"; # Capture what is in between src=" and the " (the closing quote)
$output = shell_exec("$command");
我認爲DOM文檔將是一個小更強大的,如果HTML沒有完全形成的SimpleXML。另外,我猜你必須單獨處理RSS和它包含的HTML,因爲HTML應該被編碼成RSS的實體,才能正確。 – Endophage 2011-05-09 17:48:29
如果你只想要'src'屬性,你就不需要更強大的*。在這種情況下,IMO,SimpleXML的*簡單*性質是正確的。 – 2011-05-09 17:53:24
正如我所說,這是HTML我是擔心無效的XML。看看這個SO帖子http://stackoverflow.com/questions/2890120/php-processing-invalid-xml如果你仍然認爲這會比只使用DOMDocument自動糾正錯誤的HTML更容易。 – Endophage 2011-05-09 21:08:53