Я пытаюсь создать регулярное выражение, где оно заменяет слова, которые не заключены в скобки.
Вот что я сейчас имею:
$this->parsed = preg_replace('/\b(?<!\[)('.preg_quote($word).')\b/','[$1['.implode(",",array_unique($types)).']]',$this->parsed);
Где $ word может быть одним из следующих: «Burkely Mayfair Trunk» или «Trunk».
Это заменит предложение
Это Burkely Mayfair Trunk довольно приятно
- Регулярное выражение, необходимое для правильной проверки имени домена в PHP
- Как удалить одиночные символьные слова из строки с preg_replace
- Разметка разметки в абстрактном дереве синтаксиса с использованием регулярного выражения
- Если имена верхних регистров преобразуются в правильное дело, обрабатываются «О'Хара», «Макдональд», «Ван дер Слоут» и т. Д.
- php preg_replace для свойства внутри html-тегов
для
Это [Burkely Mayfair [Trunk [productname]] [productname] довольно приятно
Хотя это должно стать
Это [Burkely Mayfair Trunk [productname]] довольно приятно
Поскольку он заменяет порядок наибольшей строки на наименьшую строку, меньшие строки и / или двойные вхождения частей слова не должны заменяться в уже замененной части строки. Он работает, когда это первая часть строки.
Когда я пытаюсь сделать динамический lookbehind, он дает следующую ошибку: «Ошибка компиляции: утверждение lookbehind не фиксированной длины при смещении 11». И я понятия не имею, как это исправить.
Любой, у кого есть идеи?