PHP正则表达式找到没有被另一个BBCode包围的BBCode
我使用以下正则表达式在论坛帖子中查找IMG bb代码及其内容:
~[img(?:=['"]?([^,]*?)(?:,[^]'"]+)?['"]?)?]([^[]+)?[/img]~i
这工作到目前为止,但我需要定义例外。 我必须找到所有的IMG bb代码,这些bb代码没有被TT-或者代码bbcode包围。 我不想解析BBCodes(因为这是由论坛软件本身完成的)。
所以我想从这里的img bbcode(这是工作,使用上面的正则表达式):
Hello, this is an example: [img]xxx[/img] - Yay!
但不是从那里
[tt]this is a test [img]xxx[/img] yolo![/tt]
而不是从这里
[code=php]<?php
echo '[img=xxx][/img]';[/code]
任何想法,如何实现这一目标? 我使用PHP(以防万一,只有正则表达式解决方案是不可能的)。
您可以针对第二个子模式使用此模式进行匹配
[((?:(?!img).)*?)](?:.*?)[/1]|[img.*](.*?)[/img]
http://regex101.com/r/tF1tX3/2
链接地址: http://www.djcxy.com/p/29879.html上一篇: PHP regex find BBCode that is not surrounded by another BBCode