PHP 单引号字符串中的变量名解析问题 20

代码如下:

<?php
$name = '韩梅梅';
$myname = '李磊';
$str = '你好,{$name},我是{$myname}';

注意$str这个字符串用的是单引号。要求最终输出:你好,韩梅梅,我是李磊

我自己想到2种方法,但是觉得不太好。希望能找到最佳的,谢谢
第一种:系统自带函数eval
eval("\$str = \"$str\";");
第二种:正则表达式
preg_match_all('/{\$(.*?)}/', $str, $matchs);
foreach ($matchs[1] as $key => $value) {
if (isset($$value)) {
$str = str_replace($matchs[0][$key], $$value, $str);
}
}
第三种:???
我有更好的答案
2014-07-22 最佳答案
echo preg_replace_callback('/\{\$(\w+?)\}/i',function($m){

global $$m[1];
return $$m[1];
}, $str);
不过为什么不用 双引号?。。。。。。。

lt318025

采纳率:53% 来自团队:PHPers 擅长: PHP JavaScript JAVA相关 python C#/.NET

其他回答

在单引号中的变量名不会解析,PHP会认为这是个字符串,双引号会被当做变量解析
比如
$a="hellow";
echo '$a'; // 结果是 $a

echo "$a"; // 结果是 hellow
-------------------------------------------
你用的应该是smart框架吧,在框架中变量的输出为了和其他语言不冲突都是可以自定义的。
$str = '你好,‘.$name}.',我是'.$myname;
追问
你好,感谢回答。

这个问题和模板、框架无关,跟代码书写规范也无关。。。

请看问题详细内容哦,希望能看到你的再次回答,多谢。
阿虚000 | 发布于2014-07-22
评论
$str = '你好,'.$name.',我是'.$myname.'';
vipwku | 发布于2014-07-22
评论

为您推荐:

×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消