当前位置:首页 » 编程语言 » phpdeprecated

phpdeprecated

发布时间: 2022-09-14 01:40:11

1. php报错: Deprecated: preg_replace(): The /e modifier is deprecated...

这个错误是这样的情况,我们来一起分析下:

  1. 从错误的信息来看,貌似说是用了不推荐的函数,也就是过时的函数,可是事实是这样吗?

  2. 为了一探究竟,我查看了PHP手册的preg_replace()函数介绍,并没有说这个函数过时了或不推荐了,那么,问题出在哪了呢?

  3. 继续往下看,结果在手册中看到这样的消息:

    错误/异常

    当传入 "e" 修饰符的时候,会产生一个E_DEPRECATED级别的错误。

  4. 好像明白点了,是因为用了“e”修饰符,那之前使用为什么没有出错呢?

  5. 继续往下看,看到版本更新,一下恍然大悟,原来如此:

    版本 说明

    5.5.0 /e修饰符已经被弃用了。使用preg_replace_callback()代替。参见文档中PREG_REPLACE_EVAL关于安全风险的更多信息

  6. 这下问题很清楚了,5.5.0以后的版本,/e的参数被废弃了,也就是不推荐了,官方建议使用preg_replace_callback()函数代替。

  7. 废话有点多了,好,下面进入正题。

  8. 好了,问题找到了,那就看看如何解决,官方推荐使用preg_replace_callback() ,那还客气啥,用就是了。

  9. 可是,问题又来了,怎么用呢?

  10. 继续看手册,看preg_replace_callback()的手册,说的很明白。

  11. 其实这个函数和preg_replace()唯一的区别就是,preg_replace()将匹配到的串直接替换,而preg_replace_callback()是将匹配到的串带入到回调函数中做处理后然后替换,就是这么任性,灵活度一下加大了,但是效率肯定不如preg_replace(),所以,如果仅仅是简单替换,还是用preg_replace()的好,如果要对匹配到的串进行特殊处理,那就非preg_replace_callback()莫属了,亲!

  12. 好了,就到这里了,为了升级知道账号,所以废话有点多了。。。。。望采纳啊。

2. PHP Deprecated: Function eregi() is deprecated in

eregi函数在php5.3中属于“不赞成使用”的函数,这个函数依然可以用,但是会有PHP Deprecated的报错。
根据你所提供的逻辑来改,把那一行改成
if (strpos($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME']) === FALSE){exit("<br><p align=center><font color='red' style='font-size:12pt'>出错了,本页面禁止外部链接。</font></p>");}
就可以了。
不过老实说这个判断有点不太严谨。

如果是我,我会这样写
if (parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) != $_SERVER['SERVER_NAME'])
{exit("<br><p align=center><font color='red' style='font-
size:12pt'>出错了,本页面禁止外部链接。</font></p>");}

3. 如何使php页面中不再出现NOTICE和DEPRECATED的错误提示

<?php
//文件头部设置
error_reporting(E_ALL^E_NOTICE);
?>
//或者在php.ini配置文件中修改:
error_reporting=E_ALL & ~E_NOTICE

4. 运行composer 时 PHP Deprecated: Directive 'track_errors' is deprecated in Unknown on line 0

打开 php.ini :
修改:
track_errors=On

为:track_errors=Off

5. php报错PHP Deprecated: preg_replace求大神解决

Deprecated: preg_replace();意思是不赞成正则替换,你这用正则替换的用法,不让使用,换种方法实现你的替换目的吧。

6. 新人求教PHP高手,Deprecated

ereg函数是5之前用的,在5.多版本就弃用了,5点低的一些会执行但有警告,你说的php2.3我没听说过这个版本,apache2.3到是有听说,正则你用preg_grep吧!返回匹配模式的数组条目,效果一样的,关于正则的函数你到php手册,函数参考->文本处理->PCRE->PCRE函数,这里是正则的一般使用到的函数,PCRE下的POSIX REGEX你也可以看下,你用的ereg函数里面就有说明,其中就有
Note:
使用 Perl 兼容正则表达式语法的 preg_match() 函数通常是比 ereg() 更快的替代方案。

7. php5.3提示Function ereg() is deprecated Error问题解决方法

本文实例讲述了php5.3提示Function
ereg()
is
deprecated
Error问题解决方法。分享给大家供大家参考。具体实现方法如下:
一、问题:
PHP
5.3
ereg()
无法正常使用,提示“Function
ereg()
is
deprecated
Error”是因为它长ereg
函数进行了升级处理,需要像preg_match使用/
/来规则了,当然也是php5.3把ereg给废掉的节奏了。
PHP
5.3
ereg()
无法正常使用,提示“Function
ereg()
is
deprecated
Error”。
问题根源是php中有两种正则表示方法,一个是posix,一个是perl,php6打算废除posix的正则表示方法所以后来就加了个preg_match。此问题解决办法很简单,在ereg前加个过滤提示信息符号即可:把ereg()变成@ereg()。这样屏蔽了提示信息,但根本问题还是没有解决,php在5.2版本以前ereg都使用正常,在5.3以后,就要用preg_match来代替ereg。所以就需要变成这样。
原来:ereg("^[0-9]*$",$page)变成:preg_match("/^[0-9]*$/",$page)
特别提醒:posix与perl的很明显的表达区别就是是否加斜杠,所以与ereg相比,后者在正则的前后分别增加了两个"/"符号,不能缺少。
例如:
改前:
复制代码
代码如下:function
inject_check($sql_str)
{
$sql_str
=
strtolower($sql_str);
return
eregi('fopen|post|eval|select|insert|and|or|update|delete|'|/*|*|../|./|union|into|load_file|outfile',
$sql_str);
//
进行过滤
}
二、解决方法:
找到代码所在的文件位置:
复制代码
代码如下:function
inject_check($sql_str)
{
$sql_str
=
strtolower($sql_str);
return
preg_match('/fopen|post|eval|select|insert|and|or|update|delete|'|/*|*|../|./|union|into|load_file|outfile/',
$sql_str);
//
进行过滤
}

注意:一定要加'/'开头与结束。此段参考:http://www.jb51.net/article/38857.htm
补充:此问题在php5.2之前版本不会出现。
希望本文所述对大家的PHP程序设计有所帮助。

热点内容
j2ee和java的区别 发布:2025-01-12 03:42:44 浏览:581
android6小米 发布:2025-01-12 03:38:35 浏览:85
redis与数据库 发布:2025-01-12 03:20:21 浏览:211
怎么升级安卓100 发布:2025-01-12 03:19:37 浏览:516
c语言倒数 发布:2025-01-12 03:14:37 浏览:929
如何免费激活移动电话卡安卓 发布:2025-01-12 03:10:27 浏览:89
2020凯越精英配置什么样 发布:2025-01-12 03:08:02 浏览:685
奥特曼空想特摄要怎么样的配置 发布:2025-01-12 03:08:01 浏览:998
空气能的压缩机 发布:2025-01-12 03:05:55 浏览:480
java字符串图片 发布:2025-01-12 03:04:31 浏览:341