Поиск и замена всех php_short_tag, который является <? = И <?

Я не хотел, чтобы в php.ini включался php_short_tag, а также я хотел использовать xml без проблем, которые могут создавать короткие теги, поэтому вместо этого я заменил каждое вхождение короткого тега в коде с помощью поиска и замены.

Я думал, что должен поделиться этим здесь, так как я нашел много ответов, которые не работали, пока я не настроил их

  1. Первый поиск и замена <?= с <?php ПРИМЕЧАНИЕ: убедитесь, что <?phpпосле него есть пробел, чтобы <?=code будет <?php code и не<?phpcode,

  2. Регулярное выражение для этого <[?][\=](?!php), проверьте это на debuggex.com

  3. Затем найдите и замените <? с <?php ПРИМЕЧАНИЕ: убедитесь, что <?phpпосле него есть пробел, чтобы <?code будет <?php code и не<?phpcode,

  4. Регулярное выражение для этого <[?](?!php), проверьте это на debuggex.com

2 ответа

Решение

Просто сделай = символ как необязательный.

preg_replace('~<\?=?(?!php\b)~', '<?php ', $str);

ИЛИ ЖЕ

preg_replace('~<\?=?(?!php\b)(\w)~', '<?php \1', $str);

DEMO

Просто на голову <?= Символ имитирует функцию эха, поэтому я должен был изменить свое изменение, например:

<?= __("Key") ?> был изменен на <?php __("Key") ?>

Это не выводило язык, поэтому я отменил это выражение:

(?<=php)\ (?=__[(])<?php __("Key") ?> стал этим <?php echo __("Key") ?>

Другие вопросы по тегам