For a silly bbcode parser I wanted to add two definitions into one, my original definition was this for preg_replace:
'#\[s\](.*?)\[/s\]#si', '<strike>\\1</strike>'
And this works, I wished for the user to be able to use either [s]
or [strike]
to initiate text in that format, so I naturally added something like this thinking it would work:
'#\[(s|strike)\](.*?)\[/(s|strike)\]#si', '<strike>\\1</strike>'
Unfortunately that fails, instead of what you would expect, both [s]
and [strike]
(used properly) make: and s
(my markdown is correct to show its real looking result, it shows s or strike regardless of what is inside it)strike
Why does it replace the inner text with the tag name instead? Is my adding parentheses around the s|strike the problem? I am probably doing this all wrong..