Jinsong Li Jinsong Li - 1 year ago 52
PHP Question

regular expression to match tag with or without close tag?

I am struggling with detect these patterns in a content body:

[tagname blah blah blah]blah blah blah[/tagname] // pattern 1: with close tag

[tagname blah blah blah] //pattern 2: without close tag

Pattern examples:

[vimeo align='center' id='123']//player.vimeo.com/video/123[/vimeo]

[vimeo align='left' id='123']

Right now I came up with this regular expression capturing both:


Notice there is a
at the end of
to make the subpattern optional. But there is a problem with this. It will falsely match
[vimeo align='center' id='123']//player.vimeo.com/video/123[/youtube]
(notice the closing tag is

Can anyone help me to fix this regular expression? Thanks!

Answer Source

You can use this regex:


instead of making the end tag optional, I'll look foward to check if there isn't anty closing tag