eval函数php
① php eval函数的问题,$str是计算公式,请问如何才能计算出结果
对样写eval('$end='.$str.';');eval里面只要符合php语法行
写时注意引号问题
终化成
eval('$end=$param1*$money1/10000;');和者eval('$end=2*40000/10000;');
② 求PHP中eval()函数的使用方法
eval() 函数把字符串按照 PHP 代码来计算。
该字符串必须是合法的 PHP 代码,且必须以分号结尾。
如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
例子:
<?php
$string = "beautiful";
$time = "winter";
$str = 'This is a $string $time morning!';
echo $str. "<br />";
eval("\$str = \"$str\";");
echo $str;
?>
输出:
This is a $string $time morning!
This is a beautiful winter morning!
③ php中eval和assert的区别
assert():
assert这个函数在php语言中是用来判断一个表达式是否成立。返回true or false;
例如
<?php
$s =123;
assert("is_int($s)");
?>
从这个例子可以看到字符串参数会被执行,这跟eval()类似。不过eval($code_str)只是执行符合php编码规范的$code_str。assert的用法却更详细一点。
assert_option()可以用来对assert()进行一些约束和控制;
如果按照默认值来,在程序的运行过程中调用assert()来进行判断表达式,遇到false时程序也是会继续执行的,这在生产环境中这样使用是不好的,而 在开发调试环境中,却是一种debug的不错的方式。特别是用上callback的方法,可以知道具体的出错信息。
所以,php的官方文档里头是建议将assert用来进行debug,我们可以发现还有一个开关ASSERT_ACTIVE可以用来控制是否开启debug。
现在问题就产生了,如果程序员在开发的时候在代码中留下了很多assert(),然后在程序发布的时候关闭执行,设置assert_options(ASSERT_ACTIVE,0);这样做是否可行?有没有安全问题?
我的建议是,既然assert主要作用是debug,就不要在程序发布的时候还留着它。在程序中用assert来对表达进行判断是不明智的,原因上文说了, 一个是在生产环境中assert可能被disabled,所以assert不能被完全信任;二是assert()可以被继续执行;而如果在生产环境让ASSERT_ACTIVE=1,那这个表达式字符串可以被执行本身就存在安全隐患。
eval():该函数对于在数据库文本字段中供日后计算而进行的代码存储很有用。
注意:1.eval()里必须是字符串;2.eval()里的引号必须是双引号,因为单引号不能解析字符串里的变量$str;
定义和用法:
(1)eval() 函数把字符串按照 PHP 代码来计算(计算=执行)。
(2)该字符串必须是合法的 PHP 代码,且必须以分号结尾。
(3)如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
④ PHP用eval时候如果eval的参数有语法错误 我想反回个FALSE 怎么去判断。
手册上的,定义和用法
eval() 函数把字符串按照 PHP 代码来计算。
该字符串必须是合法的 PHP 代码,且必须以分号结尾。
如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
判断的时候就
if(eval(字符串)) {
} else {
false
}
⑤ php执行eval&40;phpinfo时,会返回什么信息
关于eval 的概念就是把字符串作为PHP代码执行。但是关于其返回值,有时候容易出错。
如下面定义一个函数
function get_func_type(){
return array(1=>'字符串处理','2'=>'数组处理');}
你能正确说出例1,例2,例3的执行结果吗?
例1
$p=eval('get_func_type();');
trace($p);
例2
$p=eval('return get_func_type();');
trace($p);
例3
eval('$p=get_func_type();');
trace($p);
例1返回null,
例2返回如下
Array
(
[1] => 字符串处理
[2] => 数组处理
)
例3返回如下
“`
Array
(
[1] => 字符串处理
[2] => 数组处理
)
关于eval函数的返回值,手册上是如下定义的
这里写图片描述
这句话可能说的不是很清楚。简单点就是如果,执行语句中有return,且return不在函数里面,则返回Return后面的值,否则返回null。
⑥ eval()的PHP
Eval函数在PHP代码中的使用:eval() 函数把字符串按照 PHP 代码来计算。该字符串必须是合法的 PHP 代码,且必须以分号结尾。如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。实例如图所示。
实例:
$string = "beautifual";
$time = "winter";
$str =' This is a $string $time morning!'
echo $str. "<br />";
eval("$str = "$str";");
echo $str;
⑦ 问一个PHP中关于EVAL的用法
<?PHP
$b='abcdefg';
$a='b';
echo $a."<BR>"; //输出$a内容b
echo $$a."<BR>"; //输出$b内容abcdefg
?>
$$方法也可应用到数组
以下操作可能更符合你现在情况
<?PHP
$b='safasfa';
$a='$b';
eval("echo $a;");
?>
⑧ php eval怎样执行系统命令
eval — 把字符串作为PHP代码执行
说明
mixedeval( string $code_str )
把字符串code_str作为PHP代码执行。 除了其他,该函数能够执行储存于数据库文本字段内的PHP代码。
使用eval()时需注意几个因素:注意字符必须是有效的PHP代码,包括结尾的分号,以不至于解释器在eval()之后退出。并且正确地转义code_str中的东西。你可以使用一个PHP闭合标签来混合输出HTML和PHP代码。
同时需注意eval中的变量会被保留在之后的主脚本中。
参数
code_str需要被执行的字符串code_str不能包含 PHP Opening tags。
return语句会立即中止当前字符串的执行。
返回值
eval()返回NULL,除非在执行的代码中return了一个值,函数返回该值。 如果在执行的代码中有一个解析错误,eval()返回FALSE,之后的代码将正常执行。无法使用 set_error_handler() 捕获eval()中的解析错误。
范例
Example #1eval()例子 - 简单的文本合并
<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>
以上例程会输出:
This is a $string with my $name in it.This is a cup with my coffee in it.
Note: 因为是一个语言构造器而不是一个函数,不能被 可变函数 调用。
Tip和直接将结果输出到浏览器一样,可使用输出控制函数来捕获当前函数的输出,然后(例如)保存到一个 string 中。
Note:
如果在执行的代码中产生了一个致命的错误(fatal error),整个脚本会退出。
Linux 中
shell中的eval命令将会首先扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。
例如
$:cat ext
count=3
cmd=echo
cmd="$cmd \$$count"
ext 11 22 33
此时cmd=" echo $3"
eval $cmd 等价于 "echo 33 "