For a silly bbcode parser I wanted to add two definitions into one, my original definition was this for preg_replace:
\'#\\[s\\](.*?)\\[/s\\]#si\', \'
The problem is that you added two new regex groups, (s|strike)
in the opening tag and (s|strike)
in the closing tag. So inside your resulting code you will get s
or strike
. You can fix that by simply using the correct group number, 2
.
Another way would be to make that new groups non-referencing, by adding a ?:
to the beginning, but I guess the first solution is easier to understand:
#\[(?:s|strike)\](.*?)\[/(?:s|strike)\]#si