我想将所有的php短标签替换为完整的短标签。
示例源文本:
<a href="<?=$baseurl?>random/<?php echo $offset+$per_page; ?>" class="arrows right" <?php echo $displayright; ?>></a>
预期的最终结果:
<a href="<?php echo $baseurl; ?>random/<?php echo $offset+$per_page; ?>" class="arrows right" <?php echo $displayright; ?>></a>
我得到了这个:
找到:<?=(.*)?>
替换为:<?php echo \1; ?>
但结果是:
<a href="<?php echo $baseurl?>random/<?php echo $offset+$per_page; ?>" class="arrows right" <?php echo $displayright; ; ?>></a>
因此,当一行上有多个php开始和结束标记时,它确实不起作用。
我该如何解决这个问题?谢谢!
答案 0 :(得分:1)
是的,因为*
运营商贪婪,并会尝试匹配最终?
的所有内容。您可以通过匹配结束标记中的?
以外的所有内容来解决此问题:
找到:<?=([^?]*)?>
替换为:<?php echo \1; ?>
答案 1 :(得分:1)
将其放入搜索字段:
<\?=([^?]+)\?>
这在替换领域:
<?php echo \1; ?>
答案 2 :(得分:0)
当你使用*时,Notepad ++会尽可能地匹配,所以你需要告诉它你不想匹配的东西,所以它停止而不是找到整行:
查找:<?=([^?]*)?>
替换:<?php echo \1; ?>
答案 3 :(得分:0)
在你的正则表达式中使用*使它“贪婪”,你不希望这样。你想要第一次出现?&gt;匹配而不是最后一个。还有,?正则字符在正则表达式中是特殊的,因此您也需要将其转义:
<\?=([^?]+)\?>