Вряд ли получится найти такой вариант, чтобы прям идентично было. Всё таки то, как выглядит отренедреный html документ зависит от движка рендеринга и если тулза, которая занимается конвертированием не тянет с собой какой-то современный браузер - то шанс получить идентичный вариант на выходе крайне мал.
К сожалению простого варианта, который я писал на Delphi у меня уже не осталось, я когда то сделал более мощный алгоритм на C++ с построением дерева вариантов. Боюсь в вашем случае он вам не поможет.
Ну смотрите, самый просто вариант который приходит в голову:
1. Идёте циклом по тексту пока не попадёте на {
2. Передаёте эту позицию в другую функция, которая ищет пару этой открытой скобке
3. Когда она находит пару - то разбивает на массив вариантов (аналогичным способом, пропуская места вложенных скобок)
4. Выбирает один из варинантов и заменяет в тексте
5. Возвращаемся к первой функции, которая продолжает поиск с той же позиции, на которой закончили только в уже измененном тексте и действуем по тому же принципу
Т.е. если у нас такой текст
{{слово, слово} , {слово, слово, слово, слово}}, просто слово {слово, слово}
То после первого нахождения { останется примерно следующее:
{слово, слово}, просто слово {слово, слово}
Потом скрипт опять сразу же находит открытую скобку и снова выбирает нужный вариан, остается:
слово просто слово {слово, слово}
Ну, а дальше понятно. Вы бы показали свои наброски кода - было бы проще показывать, что именно изменить/добавить нужно
Станислав Почепко: я думаю стоит объединить все идеи в одну: есть базовая модель User в которой описан общий для всех типов пользователей функционал. Мы от этой модели не наследуемся, а вместо этого используем Traits в котором описана связь с моделью User и обертка для вызова всех нужных нам методов. Таким образом все общие для пользователей поля хранятся в одной таблице User, доступ к данным который мы имеем, по необходимости, через Traits.
Выглядит конечно как костыль, но я честно говоря не вижу некостыльных методов решения этой задачи.
Прочитал - там написано "нельзя", а не "невозможно". По моему мнению так делать нельзя и тем более нельзя новичков грузить подобными нюансами.
Мне лично не понятно, почему вы вообще влезли в дискуссию, когда к вам никто не обращался. Я обратился к ТС, ваше мнение мне безразлично, мне было интересно чем руководствовался человек, который выбирал правильность ответа между двумя идентичными советами, которые были всего лишь сформулированы по разному.
Daemon23RUS: ваш вариант "index.html-> index.php", мой вариант "измените расширение файла на PHP". А теперь объясните почему ваш ответ верный, а мой нет.
Что касается того, что можно было задать расширение файла html в список исполняемых я знаю, но это не поведение по умолчанию и точно не уровень человека, который задаёт такие вопросы показывая на скриншоте html файл. Я уже молчу о том, что такое решение - это очень плохая практика.
Я вижу вы вообще не понимаете как работают регулярки. Чтобы регулярка нашла все ссылки она должна пройти по всему тексту и сделает это она сама, или вы через цикл не имеет никакой разницы. Вообще никакой.
Так как вы описали не будет, не возвращают эти методы ни массивов со всеми совпадениями, ни массивов с позициями совпадений, ни вообще каких-то массивов. А даже если бы и возвращали, то собирали бы они это через те самые циклы, которые вы почему то хотите избежать.
Если вы хотели получить какую-то готовую чудо функцию в которую передаешь строку и регулярку, а на выходе получаешь массив совпадений, то даже если она и существует, то всё равно она будет работать через цикл.
С того, что мне удалось понять, то нет, это совсем не то. Да и задача на сколько я понимаю стоит другая: не проблема найти содержимое скобок, в которых есть двухзначное число, проблема проходить по этим числам отдельно. Регэкспы не возвращаются назад, и если одно совпадение нашло скобку после которой идёт двухзначное число (пускай не сразу, а через несколько других неподходящих чисел), то второе число внутри этих скобок уже никак не будет найдено, потому что на следующей итерации будет обрабатываться только тот текст, который идёт после найденного в предыдущей итерации совпадения, а значит нету открывающей скобки без которой регулярка не сработает.
Возможно я плохо объясняю, но исходя из моих знаний решить эту задачу одной регуляркой невозможно.