一段含有变量、函数、字符串的混合代码,怎么取得最终结果?如:$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。基本找到正解了。 php能嵌套么? php数据库备份 点击smarty模板文件tpl文件问什么会出现下载 删除前弹框确认,怎么实现? 怎么样用正则表达式取下列的链接、标题、日期 向大家介绍一个下电子书的地方 smartTemplate 有没有中文手册? 我的PHP网站内容管理程序 正式发布欢迎下载 散分了! ===GD 的配置 为啥我搞不定=== 我想购买Lycos的LINUX安家型空间(300元/年),请问该空间怎样?是否稳定?有什么问题么?下午3点结贴 请教一个问题 如何用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;
========================
参考者改吧.
基本找到正解了。