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);
}
}
第三种:??? 展开
<?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个回答
展开全部
在单引号中的变量名不会解析,PHP会认为这是个字符串,双引号会被当做变量解析
比如
$a="hellow";
echo '$a'; // 结果是 $a
echo "$a"; // 结果是 hellow
-------------------------------------------
你用的应该是smart框架吧,在框架中变量的输出为了和其他语言不冲突都是可以自定义的。
$str = '你好,‘.$name}.',我是'.$myname;
比如
$a="hellow";
echo '$a'; // 结果是 $a
echo "$a"; // 结果是 hellow
-------------------------------------------
你用的应该是smart框架吧,在框架中变量的输出为了和其他语言不冲突都是可以自定义的。
$str = '你好,‘.$name}.',我是'.$myname;
追问
你好,感谢回答。
这个问题和模板、框架无关,跟代码书写规范也无关。。。
请看问题详细内容哦,希望能看到你的再次回答,多谢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
echo preg_replace_callback('/\{\$(\w+?)\}/i',function($m){
global $$m[1];
return $$m[1];
}, $str);
不过为什么不用 双引号?。。。。。。。
global $$m[1];
return $$m[1];
}, $str);
不过为什么不用 双引号?。。。。。。。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$str = '你好,'.$name.',我是'.$myname.'';
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询