我需要用<?=[something]?>
替换所有类似<?php echo [something]; ?>
的PHP行:\<\?\=([a-zA-Z0-9()=#<>\[\]\\/'"._$\?:, \-]*)([;]*)\?\>
问题是某些子句中几乎可以有任何内容,甚至 ?和&lt; 但它们不能相邻。我对正则表达式有点新,并写了这个非常混乱的表达式:<?php echo \1; ?>
并将其替换为<?=[something]?><tr><td><?=[something]?>
。
它有效,但它不能匹配这样的东西:
{{1}}当它在一行中时。它完全匹配整条线。
非常感谢任何帮助。
答案 0 :(得分:1)
此代码应该有效:
$s = '<?=[something]?><tr><td><?=[something]?>';
$s = preg_replace('/(<\?)=\s*(\[[^]]*\])\s*(\?>)/', '$1php echo $2; $3', $s);
var_dump($s);
<强>输出:强>
string(56) "<?php echo [something]; ?><tr><td><?php echo [something]; ?>"