2

我找到了以下代码来检查该stripslashes()函数是否存在。

if ( function_exists( 'stripslashes' ) ) {
    // Do something
} else {
    // Do something
}

stripslashes()函数适用于 PHP4 和 PHP5,所以我想知道为什么它需要一个条件语句来检查该函数是否存在。我不明白。

这不是一个主观的问题。告诉我使用这个语句和不使用它有什么区别。提前致谢!

以下是有关它们在何处使用的相关链接:

4

2 回答 2

3

PHP 中曾经有一个称为魔术引号的功能,虽然是出于好意,但却造成了无穷无尽的混乱。

这段代码很可能是为了检测魔术引号,但这不是正确的方法,特别是因为它不起作用。

检测是否启用了魔术引号的正确方法是使用为目的而设计的功能,get_magic_quotes_gpc就像这样。

if (get_magic_quotes_gpc()) {

或者也许以下,如果您担心这将被删除。

if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {

话虽如此,整个魔术引号功能在 PHP 5.4 中已被删除,因此除非您需要支持过时的 PHP 版本,否则您可以忘记曾经存在的整个事情(除非您使用的是 WordPress……)。

在旁注中,我认为该stripslashes功能将来可能会被删除,并且可能在某一时刻不存在,但在这种情况下,这可能不是原因。

于 2015-11-04T21:02:11.077 回答
2

旁注:抄录自我的一些评论(稍作修改),以提供对亚历山大的问题的补充回答。


这可能是为了检查是否某些编码人员创建了一个名为相同的自定义函数(一种让某人发疯的方法?),或者是否有人入侵了 PHP 核心并将其删除;我当然是在猜测,这并非不可能。

但是,同样的事情也适用于if ( function_exists( 'mysql_real_escape_string' ) ).

如果服务器不支持那些旧的和不推荐使用的mysql_功能,则需要条件语句,并且证明对于使用这种性质的东西是有效/有用的。

参考:(mysql_ 从 PHP 7 中删除,以及其他弃用通知)

就个人而言,function_exists()仅应用于可能已弃用的功能;mysql_成为其中之一session_register()- 我敢肯定还有更多。

它从贡献的注释http://php.net/manual/en/function.stripslashes.php的手册中列出,根据 Alexander (O'Mara) 在评论中所说的,它似乎与magic_quotes_gpc有关。


注意:

我绝不希望从中获得任何好处,而是希望其他人访问这个问题。

于 2015-11-04T21:11:16.733 回答