2013-08-01 31 views
0

因此,我正在構建一個簡單的HTML刮板,在文本中有一些符號圖像,我需要的是獲得這個img標籤的src ,但保留它們與文本中的img標籤相同的位置。PHP使用DOM來提取img src,並保留它在文本中的位置

- 由於我在問錯誤的事情而被重寫的問題。

+1

如果你正在寫一個HTML刮刀,你爲什麼不使用HTML DOM解析器,而不是正則表達式? – Barmar

+0

HTML無法用regExp很好地解析,使用HTML解析器(閱讀http://stackoverflow.com/a/1732454/1529630) – Oriol

+0

請不要使用html遍歷庫以外的任何東西來解析html,這個社區討厭比什麼都重要。 –

回答

1

,所以你可以在一個變量中提取圖像的src屬性。在使用下面的代碼後:

$imgsrc = '/Handlers/Image.ashx?size=small&name=3&type=symbol'; 
$url = parse_url($imgsrc); 
$query = htmlspecialchars_decode($url['query']); 
parse_str($query, $arr); 
echo $arr['name'] . "\n"; // prints 3 
+0

好的我得到了這個,但我怎樣才能確保它顯示在原始圖像相同的地方? – vtFurlin

+0

您可以使用['DOMNode :: replaceChild'](http://at.php.net/manual/en/domnode.replacechild.php)完全替換圖片標籤 – anubhava

+0

我要休息幾個小時,當我回來的時候會測試它,太多了。 – vtFurlin

0

嗯,我真的建議使用一個合適的HTML解析庫來做到這一點,但如果它非常簡單,你可以使用像/<img[^>]*alt="(\d+?)"/左右的正則表達式。

0

,如果你想獲得name=部分從src屬性是/Handlers/Image.ashx?size=small&amp;name=3&amp;type=symbol您由於您使用DOM解析器可以試試這個

<?php 
$src = '/Handlers/Image.ashx?size=small&amp;name=3&amp;type=symbol'; 
$x = preg_replace('/^.*name=([^&]*).*$/i','[$1]',$src); 
echo $x; 
?> 
相關問題