Для глупых парсеров bbcode я хотел добавить два определения в одно, мое первоначальное определение было для preg_replace:
'#\[s\](.*?)\[/s\]#si', '<strike>\\1</strike>'
И это работает, я хотел, чтобы пользователь мог использовать либо [s]
, либо [strike]
, чтобы инициировать текст в этом формате, поэтому я, естественно, добавил что-то вроде этого, думая, что это сработает:
'#\[(s|strike)\](.*?)\[/(s|strike)\]#si', '<strike>\\1</strike>'
К сожалению, это не так, вместо того, что вы ожидаете, как [s]
, так и [strike]
(используется правильно): и s
моя уценка правильна, чтобы показать ее реальный результат, он показывает s или забастовку, независимо от того, что внутри нее).strike
Почему вместо этого он заменяет внутренний текст именем тега? Является ли добавление скобок вокруг проблемы s? Я, наверное, все это делаю неправильно.