2010-05-06 90 views
1

我在PHP中使用正則表達式時遇到了一些問題。我的代碼識別我的內容的所有標籤,並在此圖像中添加鏈接。我的代碼正在使用dinamycally,沒有任何定義的圖像。當我嘗試使用imapge路徑時,代碼不起作用。我怎麼解決這個問題?解析img標籤的正則表達式

Working code: 
$content = preg_replace('/(<img .*?src="(.+?)".*?>)/','<a class="nyromodal foto" href="'.$imagem_wordpress.'">\1</a>', $content); 


Problem code: 
$content = preg_replace('/(<img .*?src="http://mysite.com/files/2010/04/bac-gallery-site-matters-saline-project1.jpg".*?>)/','<a class="nyromodal foto" href="'.$imagem_wordpress.'">\1</a>', $content); 
+0

'SRC =「http'錯字? – SilentGhost 2010-05-06 17:18:35

+1

當心在URL中的文件名中加上「。」,你也需要將其轉義。 – 2010-05-06 17:20:40

回答

2
$content = preg_replace('/(<img .*?src="http:\/\/mysite.com\/files\/2010\/04\/bac-gallery-site-matters-saline-project1\.jpg".*?>)/','<a class="nyromodal foto" href="'.$imagem_wordpress.'">\1</a>', $content); 

你忘了你的逃生斜線。 (正如其他人所指出的,它應該是「HTTP」,而不是「TTP」

+0

你忘了在url中第一個'.',儘管正則表達式仍然匹配,它也會匹配'mysitescom/files /。 ..',這可能不是你想要的 – Eric 2010-05-06 17:38:53

+0

非常感謝webdestroya,效果很好 – Marcos 2010-05-06 17:41:54

+0

選擇除'/'以外的分隔符會導致較少的混亂正則表達式:'#()#' – 2010-05-06 17:49:19

0

如果是這樣的問題代碼src="http,而不是src="ttp

+0

是的,是http ... – Marcos 2010-05-06 17:46:35