我正在尝试通过调用数组来替换代码字符串中的所有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()
?
然而,这可能要慢得多。
答案 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);