我正试图找到一种最佳的方法,用调用数组来替换代码字符串中的所有PHP变量,如下所示。
例如源代码字符串
$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()
?
然而,这可能要慢得多。
发布于 2014-06-16 09:21:31
下面的regex应该按照您的要求执行:
preg_replace('/\$([a-zA-Z_0-9]+)/', '$varArray["$1"]', $input_string);
发布于 2014-06-16 23:22:59
为了避免将$var['foo']
更改为$varArray["var"]['foo']
,您必须检查变量名后面没有[
字符。为此,请使用消极前瞻
$string = preg_replace('/\$(\w+)(?![\w\[])/', '$varArray["$1"]', $string);
https://stackoverflow.com/questions/24248481
复制