0
PHP当然执行双引号中的字符串变量替换:PHP双引号串分析器
$test = 'something';
echo "This is a $test";
//Output: This is a something
我正在寻找的是PHP的变量替换,但有回调:
function callback($key, &$value) {
$value=strtoupper($value);
}
$test = 'something';
echo some_cool_function('This is a $test', callback);
//Output: This is a SOMETHING
(当然这是一个完全任意的例子 - 我不想做一些简单的操作,只要将值转换为大写就可以)
因此callback
将被调用为ea ch变量(或者可能包含所有变量的数组,如'$test' => 'something'
)。这样我可以直接操作PHP,并且可以使用PHP执行的变量和替换值。
我知道类似的东西可以用回调等正则表达式来完成。但是,PHP处理变量如$test[0]
,复杂语法({ }
)等可能会复杂起作用的复杂性非常高。
PHP是否以某种方式公开其用于双引号字符串的内部字符串分析器?
我很困惑,你想要做什么。你的意思是像一个for语句循环变量?例如:'$ test = ['test1','test2']; foreach($ test as $ val){$ testString =“这是一个$ val”; some_cool_function($ testString); }' – rubes114
双引号字符串处理本身并不公开。你必须[考虑eval](http://stackoverflow.com/questions/18197348/replacing-variables-in-a-string),或者使用更合理的正则表达式来替换数组和复数变量,或者使用'{ $ ...}'复杂的变量名[或'{...}'标记](http://stackoverflow.com/questions/18197348/replacing-variables-in-a-string)的依赖。 – mario
我已经更新了我的问题,并提供了我正在寻找的更详细的示例。 – Dan