3
A
回答
2
http://pl.php.net/manual/en/function.ereg.php
注:自PHP 5.3.0中,正則表達式擴展有利於PCRE擴展的棄用。調用此函數將發出E_DEPRECATED通知。有關轉換爲PCRE的幫助,請參閱差異列表。
1
它說,爲什麼在documentation page:
注:作爲PHP 5.3.0中,正則表達式擴展有利於PCRE extension的棄用。調用此函數將發出E_DEPRECATED通知。有關轉換爲PCRE的幫助,請參閱list of differences。
2
Ereg已棄用,因爲它已被PCRE擴展替代。究其原因(一個或多個)它被取代,不推薦使用在以下鏈接回答,但你在這裏保存一段時間是複製並粘貼答案:
注:的preg_match(),它使用Perl兼容的正表達式語法,通常是ereg()的更快替代方法。
一個區別是,額日格查找最長匹配的結果,而預浸尋找的第一個結果。以下是兩者之間的區別列表,以幫助您確定如何更好地更新代碼: http://www.php.net/manual/en/reference.pcre.pattern.posix.php
需要注意的是,PHP 6.0完全刪除了ereg,因此如果您最終將要將代碼移動到可能使用PHP 6.0的較新服務器,ereg函數將不再可用。
0
一個可能的原因是性能問題,正如其他人已經回答的那樣。
我想補充另一個(但)可能的原因:通過提供該網址
<?php
$arg=$_GET['key'];
if (ereg('^[A-Za-z0-9]+$', $arg) === FALSE){
die('Invalid key');
}
# Do some other things with $arg
?>
人們可以繞過它:
假設你寫了這樣一段代碼(PHP 5.3)
foo.php?key=A%00text
^~~~
與text
部分是任意東西他想,這留下了巨大的安全漏洞的代碼。 preg_match()
但是,沒有這個問題。所以你最好把你所有的代碼移植到preg
,因爲ereg
在PHP6.0中已經不再可用了。
相關問題
- 1. 爲什麼不推薦使用isJavaLetterOrDigit?
- 2. std :: iterator爲什麼不推薦使用?
- 3. 爲什麼Logger.isInfoEnabled不推薦使用org.jboss.logging.Logger?
- 4. Object.observe()爲什麼不推薦使用
- 5. 爲什麼不推薦使用std :: strstream?
- 6. 爲什麼不推薦使用struts2 FilterDispatcher?
- 7. 爲什麼不推薦使用assert_template,而應該使用什麼?
- 8. 爲什麼在OOP PHP中不推薦直接訪問屬性?
- 9. 爲什麼在Python中不推薦使用MutableString?
- 10. 爲什麼在Rails中不推薦使用auto_link?
- 11. 爲什麼在Angular中不推薦使用「導出默認」?
- 12. 爲什麼不推薦在SQL中使用「LIKE」?
- 13. 爲什麼在Rails 3中不推薦使用驗證?
- 14. 爲什麼在Guava中不推薦使用Files.deleteDirectoryContents()?
- 15. 爲什麼saveOrUpdateAll在春季不推薦使用HibernateOperations
- 16. 爲什麼Spring Boot 1.5.3中不推薦使用GuavaCacheConfiguration?
- 17. 如何找出iOS中爲什麼不推薦使用函數?
- 18. 爲什麼gunicorn_django不再被推薦?
- 19. 爲什麼不通過推薦工作?
- 20. Java Swing組件 - 爲什麼不推薦使用HTML標記?
- 21. 爲什麼不推薦使用[DataMember(EmitDefaultValue = false)]?
- 22. 爲什麼不推薦使用hibernate org.hibernate.classic.Validatable接口?
- 23. 爲什麼Matlab警告我「不推薦使用預分配」
- 24. 爲什麼不推薦使用xmp HTML標記?
- 25. 爲什麼Rails Inflector模塊不推薦使用?
- 26. 爲什麼不推薦使用hibernate的ClassMetadata.getIdentifier(Object,EntityMode)
- 27. 爲什麼不推薦使用多重繼承?
- 28. 爲什麼在C++中將「this」用作非const不推薦使用
- 29. 什麼時候推薦使用MySQL BLOB?
- 30. 爲什麼在django中不再推薦permalink裝飾器?