搜索并替换所有<! - ?=和<?的php_short_tag

时间:2015-06-16 04:25:52

标签: php regex replace php-shorttags shorttags

我不想在php.ini中启用php_short_tag,我也希望使用xml而不会出现短标签可能引入的问题,所以我用搜索替换了代码中每个短标签的出现并替换。

我想我应该在这里分享,因为我找到了很多答案,直到我调整它们才能起作用

  1. 首先使用<?=搜索并替换<?php注意:确保<?php 后面有一个空格,以便<?=code<?php code而不是<?phpcode <[?][\=](?!php)

  2. 正则表达式为<?,请查看 debuggex.com

  3. 然后使用<?php搜索并替换<?php注意:请确保<?code 后面有一个空格,以便<?php code<?phpcode而不是<[?](?!php) gulp.task('test', function (done) { karma.start({ configFile: _configFile: __dirname + '\\..\\test\\karma.conf.js', singleRun: true }, done); });

  4. 正则表达式为..\\,请查看 debuggex.com

2 个答案:

答案 0 :(得分:-1)

只需将=符号设为可选符号即可。

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

OR

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

DEMO

答案 1 :(得分:-1)

只是抬起<?=符号模仿回声功能,所以我不得不改变我的改变,例如:

<?= __("Key") ?>已更改为<?php __("Key") ?>

这没有输出语言所以我解决了这个正则表达式:

(?<=php)\ (?=__[(]) <?php __("Key") ?>成了<?php echo __("Key") ?>