PHP / Regex: o regex simples para bbcode [s] ou [strike] falha ao funcionar
Para um analisador bobo do bbcode, eu queria adicionar duas definições em uma, minha definição original era esta para preg_replace:
'#\[s\](.*?)\[/s\]#si', '<strike>\\1</strike>'
E isso funciona, eu desejava que o usuário pudesse usar[s]
ou[strike]
para iniciar o texto nesse formato, então naturalmente adicionei algo parecido com isso, pensando que funcionaria:
'#\[(s|strike)\](.*?)\[/(s|strike)\]#si', '<strike>\\1</strike>'
Infelizmente, isso falha, em vez do que você esperaria, tanto[s]
e[strike]
(usado corretamente) faça:s
estrike
(minha remarcação está correta para mostrar seu resultado real, mostra s ou strike independentemente do que está dentro dela)
Por que substitui o texto interno pelo nome da tag? A adição de parênteses ao redor do s | é o problema? Provavelmente estou fazendo tudo errado ..