2010-06-28 105 views
1

比方說,我有一個字符串contaning HTML標記與這個樣子許多的img標籤:正則表達式來改變所有IMG SRC的格式屬性

<img src="data/images/original/3.png" alt="" /> 

我需要一個正則表達式,將改變所有圖像具有路徑像這樣:

<img src="/utils/locate-image?path=data%2Fmedia%2Fimages%2Foriginal%2F3.png" alt="" /> 

我不是很擅長正則表達式,所以我將不勝感激一些代碼示例,可以做到這一點?

回答

3

請勿對此使用正則表達式。解析器應該是完美的工作。

它應該是,因爲這很容易:

foreach($html->find('img') as $e) { 
    $e->src = "insert modified src here"; 
} 

echo $html; 
+0

,但不會將其與HTML DOM是慢? – 2010-06-28 10:51:34

+6

也許吧。你想快速還是正確? – 2010-06-28 10:52:28

+1

這將是'$ e-> src ='/ utils/locate-image?path ='。 urlencode($ e-> src);'是猜測。 – jensgram 2010-06-28 10:58:43

6

不要使用正則表達式這一點。 PHP's native DOM parser應該是完美的工作。

$dom = new DOMDocument; 
$dom->loadHTML('<img src="foo" alt=""/>'); 
$images = $dom->getElementsByTagName('img'); 
foreach($images as $image) { 
    $image->setAttribute('src', 'bar'); 
    echo $dom->saveXML($image); 
} 

呼應<img src="bar" alt=""/>

+3

+1(儘管在第一段中公開的版權侵犯!:),因爲它不需要外部庫。 – 2010-06-28 11:00:45

+0

@Pekka起訴我:D – Gordon 2010-06-28 11:03:19

+0

你能說*「Abmahnung」*嗎? :D – 2010-06-28 11:04:27

相關問題