Помогите написать регулярку php
Необходимо сделать парсер кода (на подобии bbcode, но оператор только один)
Сделано это так: preg_match_all('/([^[]*)\[\Core]([^[]*)\[\/Core]([^[]*)/i', $fileline, $codeline,PREG_SET_ORDER);
Но в этом случаи любая квадратная скобка [ портит работу.
В идеале строка "текст [просто текст] текст [Core]команда [/Core]ещё текст [Core]ещё команда [/Core]" должна отрабатывать только 2 команды, а остальное выводить как есть (включая "просто текст").
Кроме того, не очень нравится скорость работы. Не знаю, можно ли с этим что-то сделать.
регулярка и скорость понятия несовместимые)
для такого простого примера можно обойтись и без неё
режем всё что до [Core] и после [/Core]
режем опять
вытаскиваем, пользуем
всё что после [/Core] не выкидываем а пропускаем через ту же функцию
до тех пор пока все не выудим
Я тоже думал об этом. Но мне кажется, что скорость будет просто ужасная.
Не даром же сделали регулярные выражения.
Вот простенький пример https://ideone.com/azWpPc
Этот вариант мне не очень подходит.
У меня проблема именно в ([^[]*). А в данном примере вообще только замена содержимого [Core] + там стоит ([a-zA-Z0-9 ]+), что исключает другие символы, которые могут попасться в коде.