我有一个像这样的双引号字符串
$count = 5; $str = "result: $count"; echo $str; //result: 5
变量解析工作得很好,我的问题是$ count var必须晚于$ str定义
$str = "result: $count"; $count = 5; echo $str; //result:
因此,我将使用单引号并在此处提出一个问题,以便在需要时找到解析var的方法
$str = 'result: $count'; $count = 5; //TODO: parse var process echo $str; //result: 5
我不会使用正则表达式替换.
对于这种类型的东西,我可能会使用字符串格式.在PHP中,那就是printf.
?php $str="result: %d" ....dostuff.....define $count..... printf($str,$count) ?
编辑:虽然,最好的方法可能部分取决于为什么你必须在$ count之前定义$ string.
如果它是一个重复很多的字符串,并且你想把它放在一个全局变量或其他东西中,printf将是我的选择,或者将其放在函数中,就像其他答案所暗示的那样.
如果字符串仅使用一次或两次,您确定无法重构代码以使$ count在$ string之前定义吗?
最后,有点乏味的理论:当你写'$ string ="result:$ count"'时,PHP会立即获取$ count的值并将其放入字符串中.在那之后,为了$ string的目的,它不再担心$ count,即使$ count更改,$ string也不会,因为它包含值的文字副本.据我所知,没有一种方法可以将字符串中的位置绑定到尚未定义的变量.'printf'方法在字符串中留下占位符,当您决定占位符中的内容时,函数printf将替换为值.
所以,如果你只想写$ string ="result:$ count"$ count = 5 $ echo string
(而不必调用其他功能)
并得到"结果:5",没有办法做到这一点.最接近的方法是使用占位符和printf,但这需要显式调用函数,而不是隐式替换.