#php #preg-replace
#php #preg-replace
Вопрос:
Я отстой с preg, я никогда не научусь этому: ( Это не должно быть сложно, могу ли я, пожалуйста, привести пример кода, чтобы заменить все между фигурными скобками, включая пробелы, все? Нравится:
$string = preg_replace('{.*?}#si', '', $string);
или что-то еще?
Ответ №1:
Вам не хватало начального #
разделителя:
'#{.*?}#s'
Посмотрите, как это работает онлайн: ideone
Пара других второстепенных моментов:
i
Модификатор здесь не нужен, поскольку в шаблоне нет букв.- Рекомендуется избегать
{
и}
в регулярных выражениях, чтобы избежать путаницы с их использованием в качестве кванторов, хотя в данном случае это не является строго необходимым.
Комментарии:
1. спасибо за ответ, но все, что он сделал, это удалил первую скобку, и все, что было между скобками, осталось.
2. @John Jenkins: Как дикое предположение, я бы предположил, что вы забыли
}
, или у вас есть дополнительный пробел или другой символ непосредственно перед финалом#
. Опубликуйте код, который вы пробовали, если вам нужна более конкретная помощь.3. Я просто скопировал и вставил код, который вы мне дали. Сейчас я пытаюсь сделать что-то другое, пытаясь медленно модифицировать код для чего-то другого: $string = preg_replace(‘#([{.*?}])*?([{.*?}])# e’, «(‘t$2’)»,$string); Он добавляет табуляцию после каждой точки и вопросительного знака, хотя я бы хотел, чтобы он делал это для всего, что находится между всеми скобками.
4. @John Jenkins: Тогда, похоже, ваш ключ копирования вставки сломан, потому что, когда я скопировал вставил его, он работал нормально… Смотрите Обновление моего ответа: я добавил ссылку на ideone, которая показывает, что она работает правильно. Я предлагаю вам опубликовать точный код, который вы пробовали, иначе я могу только догадываться, что вы сделали не так…
5. $string = preg_replace(‘#{.*?}# s’, «», $string); работает для вас? Все, что он делает для меня, это удаляет первую скобку. В основном я пытаюсь сделать отступы внутри операторов if () { $blah = 1; } if, while и foreach .
Ответ №2:
После прочтения ваших других вопросов кажется, что вы хотите использовать это для украшения своего кода. В то время как многие редакторы имеют эту функциональность, встроенную в них для одного файла, я полагаю, вы хотите применить это к куче файлов. Если это так, см. https://github.com/clbustos/PHP_Beautifier .
Редактировать из-за комментариев: тогда вы не захотите использовать регулярные выражения, честно. Используйте php tokenizer.
Комментарии:
1. Я пытаюсь сделать свой собственный более красивый
2. @JohnJenkins: Попросив других людей написать это для вас за деньги?
3. Я предлагаю это совершенно бесплатно, без рекламы, в основном я буду использовать его сам