Как заменить выражение метасимволами, используя preg_replace в PHP? - PullRequest
0 голосов
/ 02 марта 2020

Я пробовал по-разному, заменяя фрагмент текста метасимволами другим текстом с метасимволами в PHP. Я знаю, это кажется очень простым, но я пробовал много раз, но не получил его.

pattern: $Sel = 'anyvalues';

замена: $Sel = 'one other';

тема : <?php $Sel = 'anyvalues';

Я глубоко пытался использовать методы addlashes () и preg_quote () в разных порядках, но это не работает. Мне нужно, чтобы оно было таким, как представлено, вместо того, чтобы искать какие-либо обходные пути.

Каждое из этих значений l ie в разных файлах, т. Е. Шаблон находится в одном файле, замена в другом, а также тема в другом.

1 Ответ

1 голос
/ 02 марта 2020

Вы завернули свой шаблон в разделители ?

$pattern = '$Sel = "anyvalues_containing_delimiter_/";';
$replacement = '$Sel = "one other";';
$subject = '<?php $Sel = "anyvalues_containing_delimiter_/";';

echo preg_replace(sprintf('/%s/', preg_quote($pattern, '/')), $replacement, $subject);

Содержимое шаблона - единственное, которое требует экранирования, следовательно, вызов preg_quote. Второй аргумент - это разделитель, в который оборачивается шаблон (что здесь делает sprintf), поэтому любые вхождения в содержимом шаблона также можно экранировать до их применения.

Редактировать: я изменил фрагмент для покрытия случаев вхождения разделителя в содержимом файла.

Второе редактирование: перемещен код из связанного фрагмента в сам ответ.

...