Deprecated: Function ereg() is deprecated in 解决方案

本文详细介绍了在PHP5.3版本中ereg函数无法正常使用时的解决方案,通过将ereg替换为preg_match,并解释了两种正则表示方法的区别。包括如何正确使用preg_match函数,并特别提醒了正则表达式的书写格式变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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相比,后者在正则的前后分别增加了两个”/”符号,不能缺少。


原文地址:http://blog.163.com/yanli_xu/blog/static/1363672912011420101820393/

### 解决 PHP 中 `get_magic_quotes_gpc` 函数已废弃的警告 自 PHP 5.4.0 起,`get_magic_quotes_gpc()` 已被标记为弃用,在更高版本中甚至可能完全移除该函数。为了处理此问题并消除警告消息,可以采用以下方法来替代原有的功能。 #### 方法一:检测 magic quotes 并手动取消转义 如果应用程序仍然依赖于 `magic_quotes_gpc` 的行为,则可以在早期阶段检查其状态,并通过代码显式地去除任何自动添加的反斜杠: ```php if (!function_exists('get_magic_quotes_gpc') || !get_magic_quotes_gpc()) { // 如果未启用 magic_quotes_gpc 或者函数不存在则无需操作 } else { function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } $_POST = array_map('stripslashes_deep', $_POST); $_GET = array_map('stripslashes_deep', $_GET); $_COOKIE = array_map('stripslashes_deep', $_COOKIE); $_REQUEST = array_map('stripslashes_deep', $_REQUEST); } ``` 这段代码会遍历所有的输入数据结构(如 POST、GET 和 COOKIE),并对其中的内容执行 `stripslashes()` 来删除多余的反斜杠[^1]。 #### 方法二:更新应用逻辑不再依赖 magic quotes 最佳实践是重构应用程序以不依赖于 `magic_quotes_gpc` 提供的安全特性。现代 Web 应用程序应该始终使用预处理语句或其他安全机制来防止 SQL 注入攻击,而不是依靠服务器配置中的全局设置。对于 HTML 输出,应当仅在实际渲染到页面之前调用 `htmlspecialchars()` 等编码函数。 因此建议修改业务逻辑部分,确保所有数据库查询都经过适当准备,并且只在必要时对输出进行适当的实体化转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值