正则表达式提取标签[img]和[/ img]之间的内容

时间:2013-05-12 08:06:46

标签: php regex preg-match

尝试提出一个PHP regexp,它将提取文本中第一个[img] ... [/ img]标记的内容。也可以是img或IMG。

非常感谢任何帮助。

使用我糟糕的正则表达式,我来了以下,但没有用:

/[img](.+)[/img/]

以下是应该有效的文字示例:    http://pt.wikipedia.org/wiki/Erich_von_D%C3%A4niken]Erich Von Daniken [/ url] [/ align] [align = center] [img] http://www.ceticismoaberto.com/wp-content /uploads/2012/04/erich_von_daniken_7.jpg[/img]

它应该只返回: http://www.ceticismoaberto.com/wp-content/uploads/2012/04/erich_von_daniken_7.jpg

我正在使用网页发送正则表达式: http://www.myregextester.com/index.php 我正在使用的Php代码是:

$message=$post["message"];
//try to locate the first image on the post text
if (preg_match("!http://[^?#]+\.(?:jpe?g|png|gif)!Ui", $message, $matches)) {
    return $matches[0];
}

上面的正则表达式对某些情况不起作用,就像我之前展示的情况一样,这也是我尝试不同方法的原因。

2 个答案:

答案 0 :(得分:0)

这应该可以解决问题

/\[img\](.*?)\[\/img\]/i

[]字符应该使用\来转义,因为它们由正则表达式解析器使用。

答案 1 :(得分:0)

您必须转义所有括号字符,也许您有回车符。试试这个:

\[img\](.|\n)*\[/img\]