當前位置:首頁 » 編程語言 » 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程序設計有所幫助。

熱點內容
怎樣禁止空間訪問 發布:2025-01-12 00:32:44 瀏覽:836
rms加密 發布:2025-01-12 00:32:07 瀏覽:531
python寫搶票程序 發布:2025-01-12 00:25:07 瀏覽:981
360瀏覽器打開ftp 發布:2025-01-12 00:24:15 瀏覽:787
蘋果和安卓哪個適合拍攝短視頻 發布:2025-01-12 00:20:48 瀏覽:687
手機查詢文件夾 發布:2025-01-12 00:16:51 瀏覽:131
二手安卓和新手機哪個值得買 發布:2025-01-12 00:12:38 瀏覽:123
多台雲伺服器怎樣用一個ip 發布:2025-01-11 23:59:44 瀏覽:251
辦公伺服器什麼系統好 發布:2025-01-11 23:50:06 瀏覽:350
boat伺服器怎麼開 發布:2025-01-11 23:48:57 瀏覽:490