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

2022-03-29 00:00:00 regex php preg-match

尝试设计一个PHP regexp来提取文本中第一个[img]...[/img]标记的内容。也可以是img或img。

非常感谢您的帮助。

使用我糟糕的regexp,我带来了以下内容,但不起作用:

/[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

我正在使用网页向regexp发送文本: 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];
}

上面的正则表达式在某些情况下不起作用,就像我之前展示的那样,这就是为什么我正在尝试不同的方法。


解决方案

这应该会奏效

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

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

相关文章