ERROR 5 php中使用正則

2021-05-24 01:14:19 字數 2096 閱讀 5776

今天在用正則校驗電子郵件格式時,遇到乙個奇怪的問題,同樣的正規表示式在js時校驗 輸入email位址格式正確,但在服務端校驗為不通過。於是納悶了,qq群裡問了一圈,有人時候是php中正則和js正則有些不一樣,經過一番試驗,排除了此可能性。那究竟是什麼原因導致這一問題的出現了呢? 開啟 error_reporting(e_all); 問題呈現出來了:

deprecated: function ereg() is deprecated in ....

不支援 ereg()函式? 《php和mysql web開發(原書第4版)》上就是這麼說的呀,怎麼會不支援了呢?(看來我太相信書上說的了!)

搜尋了一通,終於找到原因及解決辦法了,如下(來自http://hi.baidu.com/ooleo/blog/item/70fc5b820d6d5081f703a60e.html):

deprecated: function ereg() is deprecated ind:/wamp/www/index.phpon line176

deprecated: function ereg_replace() is deprecated ind:/wamp/www/index.phpon line179

deprecated: function ereg_replace() is deprecated ind:/wamp/www/index.phpon line179

以上報錯是因為php版本是5.3,5.3的版本廢棄了‍ereg() 、‍ereg_replace() ,所以會出現這個問題,dede的程式都是用的這個如果用5.3版本的php就會出現這個,具體解決辦法:

如果一定要用php5.3,請修改php.ini中下面**

;extension=php_mbstring.dll

改為extension=php_mbstring.dll

;mbstring.func_overload = 0

修改為:

mbstring.func_overload = 7

原來5.3的版本就不支援這個了(後來發現 應該是 3.0.9 以上版本就不支援這個函式了),按上述方法修改了,果然好了。(我的extension=php_mbstring.dll 本身就是開啟的,所以未修改)

問題雖然解決了,但心裡總覺得不踏實,要用ereg()這個函式,還得修改php.ini ,這個到時候發布到外網後,外網伺服器不支援怎麼辦?

既然5.3版本不支援這方法,那應該有它支援的實現該功能的函式吧!找找吧!

找出結果如下:

5.3 版本對應的方法:preg_match()

preg_match (php 3 >= 3.0.9, php 4, php 5)

preg_match -- 進行正規表示式匹配

【說明】

intpreg_match( string pattern, string subject [, array matches [, int flags]] )

在 subject 字串中搜尋與 pattern 給出的正規表示式相匹配的內容。

如果提供了 matches,則其會被搜尋的結果所填充。$matches[0] 將包含與整個模式匹配的文字,$matches[1] 將包含與第乙個捕獲的括號中的子模式所匹配的文字,以此類推。

flags 可以是下列標記:

preg_offset_capture 如果設定本標記,對每個出現的匹配結果也同時返回其附屬的字串偏移量。注意這改變了返回的陣列的值,使其中的每個單元也是乙個陣列,其中第一項為匹配字串,第二項為其偏移量。本標記自 php 4.3.0 起可用。

flags 引數自 php 4.3.0 起可用。

preg_match() 返回 pattern 所匹配的次數。要麼是 0 次(沒有匹配)或 1 次,因為 preg_match() 在第一次匹配之後將停止搜尋。如果出錯 preg_match() 返回false。

--------- 修改後,心中踏實了,^_^

php中使用mysql介紹 PHP中使用MySQL

mysql資料庫的擴充套件 擴充套件庫基本功能相似,用法基本相同,會增加一些新的特性 mysqli擴充套件庫 只能對mysql資料庫操作 pdo擴充套件 可以操作很多態別的資料庫 wamp下修改mysql資料庫密碼 三者在建立連線上的比較 pdo需要四個引數,除了資料庫管理員名稱 密碼 host 還...

mysql 中使用 LIKE ,正則

like 表示任何字元 null除外 出現任意次 0 無窮個 同時還必須注意大小寫問題。表示任何字元出現1 不能多也不能少 次 正則模式 匹配任意單個字元,包括換行 m m,m,n n mysql select abcdefg regexp a mysql select abcdef regexp ...

為什麼要使用Top 5 error

因為在影象分類的任務中,乙個影象中可能會有多個物體,那麼我們的演算法會可能會全部識別出來,並按照置信度大小排序。如果我們只使用了top 1 error,那麼有可能演算法會因為識別到了這個物體但是不是置信度最高而受到懲罰。為了讓我們演算法保留識別出乙個影象中的多個物體的能力,所以我們採取了top 5 ...