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

代码如下:<?php$name='韩梅梅';$myname='李磊';$str='你好,{$name},我是{$myname}';注意$str这个字符串用的是单引号。要求... 代码如下:

<?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);
}
}
第三种:???
展开
 我来答
阿虚000
2014-07-22
知道答主
回答量:26
采纳率:0%
帮助的人:14.5万
展开全部
在单引号中的变量名不会解析,PHP会认为这是个字符串,双引号会被当做变量解析
比如
$a="hellow";
echo '$a'; // 结果是 $a

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

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

请看问题详细内容哦,希望能看到你的再次回答,多谢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tsotsi
2014-07-22 · TA获得超过940个赞
知道小有建树答主
回答量:1367
采纳率:55%
帮助的人:692万
展开全部
echo preg_replace_callback('/\{\$(\w+?)\}/i',function($m){

global $$m[1];
return $$m[1];
}, $str);
不过为什么不用 双引号?。。。。。。。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vipwku
2014-07-22
知道答主
回答量:44
采纳率:0%
帮助的人:10.6万
展开全部
$str = '你好,'.$name.',我是'.$myname.'';
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

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

说明

0/200

提交
取消

辅 助

模 式