Поиск и замена всех php_short_tag, который является <? = И <?
Я не хотел, чтобы в php.ini включался php_short_tag, а также я хотел использовать xml без проблем, которые могут создавать короткие теги, поэтому вместо этого я заменил каждое вхождение короткого тега в коде с помощью поиска и замены.
Я думал, что должен поделиться этим здесь, так как я нашел много ответов, которые не работали, пока я не настроил их
Первый поиск и замена
<?=
с<?php
ПРИМЕЧАНИЕ: убедитесь, что<?php
после него есть пробел, чтобы<?=code
будет<?php code
и не<?phpcode
,Регулярное выражение для этого
<[?][\=](?!php)
, проверьте это на debuggex.comЗатем найдите и замените
<?
с<?php
ПРИМЕЧАНИЕ: убедитесь, что<?php
после него есть пробел, чтобы<?code
будет<?php code
и не<?phpcode
,Регулярное выражение для этого
<[?](?!php)
, проверьте это на debuggex.com
2 ответа
Просто сделай =
символ как необязательный.
preg_replace('~<\?=?(?!php\b)~', '<?php ', $str);
ИЛИ ЖЕ
preg_replace('~<\?=?(?!php\b)(\w)~', '<?php \1', $str);
Просто на голову <?=
Символ имитирует функцию эха, поэтому я должен был изменить свое изменение, например:
<?= __("Key") ?>
был изменен на <?php __("Key") ?>
Это не выводило язык, поэтому я отменил это выражение:
(?<=php)\ (?=__[(])
<?php __("Key") ?>
стал этим <?php echo __("Key") ?>