2015-12-30 26 views
1

我正在將mediawiki標記轉換爲html。 在轉換圖像標籤滯留正確preg_replace模式和mediawiki標記的圖像標記替換

Mediawiki的文字與圖片代碼

[[File:xyz2.png|none|thumb|748x748px]] 

我米使用的preg_replace和以下模式工作高達一定程度

preg_replace(
"/\[\[(file):(.+?)\]\]/i", 
"<img src='".explode("|",'$2',1)[0]."' alt=\"$6\"/>" 
[[File:xyz2.png|none|thumb|748x748px]] 
); 

輸出是

<img src="xyz2.png|none|thumb|748x748px" alt=""> 

然而在這種情況下需要的輸出是

<img src="xyz2.png" alt=""> 

在匹配/替換模式中可以做些什麼來實現這一點?

+0

'' - >'([^ |] *)(+?)'那麼你可以只用'$ 2',該comlete輸入字符串輸出回 – Rizier123

+0

' 。*在匹配其餘部分之後,例如'/ \ [\ [(file):([^ |] *)。* \] \]/i' – echoashu

+0

您還需要添加替換 – Rizier123

回答

1

使用您當前的正則表達式,您可以匹配所有內容,直到您的第二個捕獲組的兩個結束括號。但是你可以改變它,所以你只需要抓住一切,直到第一個管道,然後你將得到你的文件名,例如

preg_replace(
    "/\[\[(file):([^|]*).*\]\]/i", 
    "<img src='$2' alt=\"$6\"/>", 
    "[[File:xyz2.png|none|thumb|748x748px]]" 
);