PHP - 替换php公式

时间:2014-06-16 16:46:03

标签: php preg-replace preg-match

我正在尝试通过调用数组来替换代码字符串中的所有PHP变量的最佳方法,如下所示。

E.g。源代码字符串

$random_var_name + $random_var_name2 * $diff_var_name3

转变为

$varArray["random_var_name"] + $varArray["random_var_name2"] * $varArray["diff_var_name3"]

我曾认为preg_replace()是最佳解决方案,但难以满足需要使用搜索模式的子部分执行替换。

或许最好只用preg_match检索所有变量,编辑/包装它们,然后为每个变量执行一个str_replace()

然而,这可能要慢得多。

2 个答案:

答案 0 :(得分:1)

以下正则表达式应该按照您的要求进行:

preg_replace('/\$([a-zA-Z_0-9]+)/', '$varArray["$1"]', $input_string);

答案 1 :(得分:1)

为了避免将$var['foo']更改为$varArray["var"]['foo'],您必须检查变量名称后面没有[个字符。为此使用negative look-ahead

$string = preg_replace('/\$(\w+)(?![\w\[])/', '$varArray["$1"]', $string);