首页 > 编程知识 正文

php的eval作用,eval PHP

时间:2023-12-28 11:56:48 阅读:327796 作者:FWTK

本文目录一览:

python中eval()函数的作用是什么?

python中eval函数作用如下:

1、计算字符串中有效的表达式,并返回结果。

2、将字符串转成相应的对象(如list、tuple、dict和string之间的转换)。

3、将利用反引号转换的字符串再反转回对象。

函数作用域:eval()函数并不会创建一个新的作用域,并且它的作用域就是它所在的作用域,有时候需要将eval()函数的作用域设置为全局,当然可以将eval()在全局作用域中使用,这个时候可以用window.eval()的方式实现。

参数情况:

(1)如果参数是一个表达式,eval() 函数将执行表达式。

(2)如果参数是Javascript语句,eval()将执行 Javascript 语句。

注意:如果执行结果是一个值就返回,不是就返回undefined,如果参数不是一个字符串,则直接返回该参数。

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。

eval函数的作用

eval调用时,实例为eval eval 函数可将字符串转换为代码执行,并返回一个或多个值 返回值 = eval eval 函数可将字符串转换为代码执行,

php eval函数看不明白

?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!

eval()函数的作用是什么?

python当中的eval()函数是将字符串当成有效Python表达式来求值,并返回计算结果

x = 1

eval('x+1')

eval('x==1')

与之对应的repr函数,它能够将Python的变量和表达式转换为字符串表示

repr(x+1)

repr(x+ ‘1’-1)('x=+=1')

函数说明

如果eval函数在执行时遇到错误,则抛出异常给调用者。

类似的函数是loadcode ,loadcode并不立即执行代码,而是返回一个函数对象。

并且loadcode支持路径参数,eval并不支持。 eval并不支持代码中的return语句,而是将代码作为表达式直接计算出结果。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。