Есть выражение:
<xx></xx><xx><tt>ZZZ</tt></xx>
Необходимо произвести замену с помощью pref_replace
<xx><tt>ZZZ</tt></xx>
Если произвести замену по выражению
/<xx>.*ZZZ.*<\/xx>/
то заменится вся строка. Как заменить только нужное?
Пробовал выражение
/<xx>(?!.*xx).*ZZZ.*<\/xx>/
, но оно не дает никаких результатов.
Подскажите как быть в этой ситуации?
Скорее всего вам нужна такая регулярка
/<xx>((?!<\/xx>).)*?ZZZ((?!<xx>).)*?<\/xx>/
После нахождения <xx>
при просмотре каждого последующего символа проверяет отсутствие </xx>
и наличие ZZZ
. После нахождения ZZZ
при просмотре каждого последующего символа проверяет отсутствие <xx>
и наличие </xx>
.
Пример работы https://regex101.com/r/6nbyxX/1
P.S. Возможно стоит заменить (?!<\/xx>)
и (?!<xx>)
на (?!<\/?xx>)
.
123 <xx></xx><xx><tt>ZZZ</tt></xx> 123
заменить на
123 <xx></xx><pp>OOO</pp> 123
Возможно, достаточно:
$s = preg_replace('@<xx><tt>ZZZ</tt></xx>@us', '<pp>OOO</pp>');
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день профессионалыПодскажите, как пересортировать элементы в массиве, что бы первым шел displayname, а не title
Где ошибка в коде? В теории код должен работать так чтобы проверять входящие сообщение и отправлять отредактированный ответ исходя из полученногоЕсли...
Доброго времени сутокДелаю мягкое удаление для ресурса, при переходе в виде по ссылке "Восстановить" (ссылка посылает POST к route('announces