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

时间:2015-12-30 00:36:44

标签: php regex preg-replace preg-match mediawiki

我正在将mediawiki标记转换为html。 坚持正确转换图片标签

带有图片代码的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="">

为实现这一目标,可以在匹配/替换模式中进行哪些修改?

1 个答案:

答案 0 :(得分:1)

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

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