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

代码如下:<?php$name='韩梅梅';$myname='李磊';$str='你好,{$name},我是{$myname}';注意$str这个字符串用的是单引号。要求最终输出:你好,韩梅梅,我是李磊我自己想到2种方法,但... 代码如下:

<?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);
}
}
第三种:???
展开
 我来答

答题抽奖

首次认真答题后

即可获得3次抽奖机会,100%中奖。

更多问题
最佳答案
lt318025
来自电脑网络类芝麻团 2014-07-22
lt318025
采纳数:550 获赞数:773 LV10
擅长:PHP JavaScript JAVA相关 python C#/.NET
参与团队:PHPers
向TA提问 私信TA
展开全部
echo preg_replace_callback('/\{\$(\w+?)\}/i',function($m){

global $$m[1];
return $$m[1];
}, $str);
不过为什么不用 双引号?。。。。。。。
阿虚000
2014-07-22
阿虚000
采纳数:6 获赞数:2 LV4
擅长:其他编程语言 PHP 数据库DB
向TA提问 私信TA
展开全部
在单引号中的变量名不会解析,PHP会认为这是个字符串,双引号会被当做变量解析
比如
$a="hellow";
echo '$a'; // 结果是 $a

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

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

请看问题详细内容哦,希望能看到你的再次回答,多谢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vipwku
2014-07-22
vipwku
采纳数:1 获赞数:5 LV3
擅长:PHP
向TA提问 私信TA
展开全部
$str = '你好,'.$name.',我是'.$myname.'';
已赞过 已踩过<
你对这个回答的评价是?
评论 收起

为你推荐:

×

类别

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

说明

0/200

提交
取消