Почему preg_replace дает такой результат

Я использую этот preg_replace

  echo preg_replace('/.*/','r','string');

https://eval.in/720293

Я ожидал, что это должно вывести r

Но выход

р-р

Может кто-нибудь объяснить, почему это эхо двух р?

3

Решение

Потому что preg_replace использует глобальный флаг и .* сначала сопоставляет всю строку, а затем пустую строку в конце, и, следовательно, вы видите два раза r.
Если вы хотите заменить только строку, вы должны быть более явными с шаблоном. Например, вы можете использовать следующее ^.*,
Другой вариант — добавить ограничение в preg_replace, чтобы заменить только первое совпадение:
preg_replace (‘/.*/’, ‘r’, ‘string’, 1)

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector