PHP是世界上最流行的后端編程語言之一,在它的發(fā)展歷程中,逐漸形成了一系列高效的函數(shù)來實(shí)現(xiàn)一些常見功能,并在其它語言中逐漸普及,其中之一便是ereg函數(shù),在PHP5.3版本被棄用。ereg函數(shù)是一個(gè)用于正則表達(dá)式匹配和替換的函數(shù),但是由于它的限制和存在的一些問題,在PHP5.3版本中被移除并被preg系列函數(shù)所取代。
ereg函數(shù)和preg系列函數(shù)都是用來匹配一段文本中的某個(gè)特定模式的函數(shù)。它們之間的主要區(qū)別在于ereg函數(shù)經(jīng)常被認(rèn)為不如preg函數(shù)強(qiáng)大和高效。ereg函數(shù)本質(zhì)上是一個(gè)不完整的實(shí)現(xiàn),不能處理Unicode文本和UTF-8編碼等復(fù)雜的情況。而preg系列函數(shù)可以輕易地解決以上問題,使得在特定的情景下,它會表現(xiàn)出更好的性能表現(xiàn)。
下面是一個(gè)使用ereg函數(shù)的示例代碼。
<?php $str = "php是一個(gè)偉大的語言"; if (ereg("PHP", $str)) { echo "找到了!"; } else { echo "沒有找到"; } ?>
在上面的例子中,如果極其小概率的情況下$str中有PHP的話,那么就會返回找到了。但是,由于ereg函數(shù)不能處理大小寫,所以這個(gè)程序?qū)嶋H上并不能正常工作。更一般地講,ereg函數(shù)通常被證明是對于現(xiàn)代應(yīng)用不太合適的,其中preg系列函數(shù)更占優(yōu)勢。
下面我們來看看preg_match函數(shù),這是一種使用正則表達(dá)式來匹配一個(gè)字符串的函數(shù),并且plot提供了更多的功能。
<?php $str = "php是一個(gè)偉大的語言"; if (preg_match("/PHP/i", $str)) { echo "找到了!"; } else { echo "沒有找到"; } ?>
上述代碼用preg_match代替了ereg。注意到我使用了/i(ignore,不區(qū)分大小寫)標(biāo)志來使得匹配更加靈活。這個(gè)程序在輸入相同的字符串時(shí)才會輸出找到了,而不會因?yàn)榇笮憜栴}無法匹配。
上面的例子很簡單,但是這已經(jīng)足以證明,preg_match函數(shù)比ereg函數(shù)更好用。所有像ereg這樣的函數(shù)都已經(jīng)替代成了更好的函數(shù)(往往是preg系列),所以不要再使用ereg函數(shù)了,否則可能會在大型應(yīng)用中引起問題。
總之,ereg函數(shù)不在PHP5.3版本中被推薦使用,已經(jīng)被preg系列函數(shù)所替代。而一組新的函數(shù)則適應(yīng)了更為復(fù)雜的UTF-8編碼和Unicode文本,它們能夠更快地處理更復(fù)雜的任務(wù)。