1

我需要用这样的方式替换所有 PHP 行<?=[something]?>:问题是,这个东西子句<?php echo [something]; ?>中几乎可以有任何东西<但它们不能相邻。我对正则表达式有点陌生,写了这个非常混乱的表达式:并将其替换为.\<\?\=([a-zA-Z0-9()=#<>\[\]\\/'"._$\?:, \-]*)([;]*)\?\><?php echo \1; ?>

它可以工作,但它不能匹配这样的东西:

<?=[something]?><tr><td><?=[something]?>当一切都在一条线上。它完全匹配整条线。

任何帮助将不胜感激。

4

1 回答 1

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]; ?>"
于 2013-08-08T10:07:02.313 回答