一段含有变量、函数、字符串的混合代码,怎么取得最终结果?如:$str = "$t天是date('Y-m-d')。" $str = "{$t}天是".date('Y-m-d')."。"或$str = date("{$t}天是Y-m-d。"); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $t="今";$str="'{$t}天是'.date('Y-m-d').'。'";eval("\$str=$str;");echo $str;//Output 今天是2007-05-24 $str = $t.'天是'.date('Y-m-d').'。'; $t天是date('Y-m-d')。这句话是不能变的,它就是一段混合的代码,是从数据库取出的,其实就是一段文本。现在要让这段文本以php方式执行,得到执行后的结果。如:从数据库取出的文本是:$t="今";$str="$t天是date('Y-m-d')。";现在怎么得到以上的执行结果:$str="今天是2007-5-25"; 可能要妥协一下做法,使用正则。$t后保留一个空格,否则会解析错误.参考:====================================================$t = '今';$str="$t 天是date('Y-m-d')";if(preg_match('/date\(.*?\)/is',$str)){ $str = preg_replace('/(date\(\')|\'\)/is','',$str);}echo str_replace(' ','',date($str)); 谢谢。$str="$t 天是date('Y-m-d')";应该是:$str='$t 天是date(\'Y-m-d\')';因为$t是从数据库里读出来的字符串,是不会直接执行变量的。date表示这个是函数,也可能是其它函数的。现在这是一个例子,在具体中,这个字符串是不定的。 $str = $t."天是".date('Y-m-d')."。"; $t="今";$day_func = "date";$day_param = "Y-m-d";$day_out = $day_func($day_param);$str='{$t}天是$day_out';eval("\$str = \"$str\";");echo $str;字符串分开来读,当函数指针处理也是可以的 呵呵,可能大家还是没有理解我的意思。$t 天是date('Y-m-d')。这句话是从数据库取出的,不是想当然可以拆分,要拆分的话,需要分析语法。 $t = '今';$str='$t 天是date(\'Y-m-d\')';$str = preg_replace('/\$[a-z_]/ie',"$0",$str);$str = preg_replace('/[a-z_]+\(.*?\)/ie',"p('$0')",$str);function p($a){ eval("\$a=$a;"); return $a;}echo $str;========================参考者改吧. 谢谢,foolbirdflyfirst。基本找到正解了。 RewriteRule重写问题 求个正则 怎样给MySQL5安装可视化工具? 为什么在我安装php以后,在文件php.ini中找不到extension=php_mysql.dll这一句, 让我郁闷了好几天的底级问题 请问为何我经常被踢出?? 请教,php的小问题 一个PHP按条件搜索数组的问题 php采集高手进:利用curl模拟登录抓取数据遇到json调用问题不成功,求助! 网站页面如何删除验证码功能,不影响网站使用。 请教一个问题 如何用php得到本页的完整url?
$str="'{$t}天是'.date('Y-m-d').'。'";
eval("\$str=$str;");
echo $str;//Output 今天是2007-05-24
这句话是不能变的,它就是一段混合的代码,是从数据库取出的,其实就是一段文本。
现在要让这段文本以php方式执行,得到执行后的结果。如:
从数据库取出的文本是:
$t="今";
$str="$t天是date('Y-m-d')。";
现在怎么得到以上的执行结果:
$str="今天是2007-5-25";
$t后保留一个空格,否则会解析错误.
参考:
====================================================
$t = '今';
$str="$t 天是date('Y-m-d')";
if(preg_match('/date\(.*?\)/is',$str))
{
$str = preg_replace('/(date\(\')|\'\)/is','',$str);
}
echo str_replace(' ','',date($str));
应该是:$str='$t 天是date(\'Y-m-d\')';
因为$t是从数据库里读出来的字符串,是不会直接执行变量的。
date表示这个是函数,也可能是其它函数的。现在这是一个例子,在具体中,这个字符串是不定的。
$day_func = "date";
$day_param = "Y-m-d";
$day_out = $day_func($day_param);
$str='{$t}天是$day_out';
eval("\$str = \"$str\";");
echo $str;字符串分开来读,当函数指针处理也是可以的
$t 天是date('Y-m-d')。
这句话是从数据库取出的,不是想当然可以拆分,要拆分的话,需要分析语法。
$str = preg_replace('/[a-z_]+\(.*?\)/ie',"p('$0')",$str);
function p($a)
{
eval("\$a=$a;");
return $a;
}
echo $str;
========================
参考者改吧.
基本找到正解了。