我目前正在尝试从 BBCode 获取 URL。它有四种可能性,这是我目前的问题:
[url]http://stackoverflow.com/[/url]
[url='http://stackoverflow.com/']http://stackoverflow.com/[/url]
[url="http://stackoverflow.com/"]http://stackoverflow.com/[/url]
[url=http://stackoverflow.com/]http://stackoverflow.com/[/url]
我两个都需要。这就是我到目前为止所拥有的:
/\[url(?:\=\'([^\'"]+)\')?](.+?)\[\/url]/i
但这仅适用于案例 1 和 2。
编辑:
这效果更好:
/\[url(?:\=(?:[\"|'])?(.*)(?:[^[]+)?)?\](.*)\[\/url\]/i
但仍然不完美。
编辑:
我想,我明白了。它可能需要一些优化,但它似乎工作:
/\[url(?:\=("|\'|)?(.*)?\1)?\](.*)\[\/url\]/i