preg_replace mediawiki 标记的图像标签的模式和替换

preg_replace pattern and replacement for image tag of mediawiki markup

我正在将 mediawiki 标记转换为 html。 无法正确转换图像标签

带图像标签的 Mediawiki 文本

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

我正在使用 preg_replace 并且以下模式在一定程度上有效

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

输出为

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

但是在这种情况下需要的输出是

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

可以对匹配/替换模式进行哪些修改以实现此目的?

使用当前的正则表达式,您可以将两个结尾括号之前的所有内容与第二个捕获组匹配。但是你可以改变它,这样你就可以抓住所有的东西,直到第一个管道,然后你就会有你的文件名,例如

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