2010-10-18 75 views
0

我試圖從perl模式中使用prag_match從圖像標記中提取src值。我不知道我在哪裏做錯了,但我也收到了不想要的部分。這裏是我的格局看怎麼樣 -preg_match_all表達式

preg_match_all('#src="http.+"#',$imagetag,$temp); 

$imagetag = "<img src="http://....." alt="build4.jpg" title="build4.jpg" width="320" height="240" />" 

而不是返回SRC = 「...」 的一部分,我得到了全屬性 - SRC = 「...」 ALT = 「..」 稱號=」。 。「width =」..「height =」..「;我的patten出錯了。如果有人能指出這個錯誤,我將非常感激。

+0

呃,我不認爲這是Perl的...這看起來更像是PHP。與Perl兼容的正則表達式。 – BoltClock 2010-10-18 16:31:16

+0

請考慮使用適當的DOM解析器,而不是基於正則表達式的刮板解析HTML。 – 2010-10-18 16:32:49

+0

@Bolt:抱歉,我的壞話。這是php與perl兼容的正則表達式。 @Noufal:它是否會讓我的腳本變慢,因爲我需要創建對象並傳遞標籤?因爲我最多隻需要處理4個標籤。 – Andrew 2010-10-18 17:19:21

回答

4

你需要讓你的模式是非貪婪的代替.+爲使用.+?

preg_match_all('#src="http.+?"#',$imagetag,$temp); 
+0

非常感謝,它的工作原理。如果你不介意我問,怎麼加?改變整個結果?我的意思是,我想附上。引號內的+將返回結果限制爲帶有src =「字母數字/符號」的返回結果;在我看來,它認爲最後一個屬性的引號與我的模式中的引號相匹配,並考慮所有其餘的屬性作爲模式匹配。+。 – Andrew 2010-10-18 17:29:09