önerilmiyor fonksiyonunun kullanımı

7 Cevap php

Neden böyle eregi ) deprecated? I normally use eregi e-posta doğrulama için PHP'nin bazı fonksiyonları (vardır.

Bunu kullanmak, ya da onun yerine kullanılabilecek başka bir işlevi var mıdır?

7 Cevap

Belirtildiği gibi onlar PHP'nin sonraki sürümünde kaldırılmış gibi, sen eregi veya başka önerilmiyor işlevleri kullanmak gerekir.

Dayalı bir PCRE'nin (Perl uyumlu Regex) için the preg* functions bak alternatif (preg_match ve preg_match_all e-posta doğrulama gerekli işlevleri vardır). Eregi * fonksiyonları POSIX tabanlı regex vardı, bu yüzden PCRE biraz farklı bir sözdizimi vardır ama önemli bir değişiklik değildir.

Neden bir işlevi önerilmemektedir olacak? Wikipedia önerir:

  • Bu özellik, daha güçlü, alternatif özelliği ile ikame edilmiştir.
  • Bu özellik yabancı olarak kabul edilir ve bir bütün olarak sistemin kolaylaştırmak için gelecekte kaldırılacaktır.
  • Yazılımın bir gelecek sürümü imkansız (ya da pratik) eski özelliklerini desteklemek için yapmak önemli yapısal değişiklikler, yapılması planlanmaktadır.
  • Standardizasyon veya adlandırma artış tutarlılık
  • Özelliği içeren bir tasarım kusur-sık sık bir güvenlik kusur ve böylece kaçınılması, ancak mevcut kod buna bağlı olmalıdır.

ereg ve Unicode ile çalışmak yok çünkü eregi önerilmiyor edildi.

: Soruya yanıt olarak "Why is ereg being deprecated?", Rasmus Lerdorf söyleyecekleri vardı

The real answer is that there is no Unicode support in the ereg functions, and like it or not, the world is going Unicode.

the discussion PHP-DEV-posta listesine bakın.

Onaysız fonksiyonu kullanılmamalıdır; onlar tercüman geçerli sürümünde düzgün çalışırken, onlar (ve olacak) tamamen gelecek sürümlerinde kaldırılmış olabilir, çünkü olduğunu.

Yani eski projelerde bunları kullanırsanız, siz de onları terk edebilir (ama yeni bir php sürümüne geçirirken proje muhtemelen kıracak).

Ama kesinlikle yeni projelerde kullanmak yok.

It kullanımı doğru olduğunu, ancak önerilmemektedir. Bu PHP bir sonraki sürümde bu yöntem kaldırılan alabilirsiniz demektir. Bu güvenlik, fazlalık ya da başka nedenlerle olabilir. Normalde yerine bu yöntemlerden kullanabileceğiniz diğer yöntemler vardır (örneğin eregi -> preg_match)

Eğer komut ileriye uyumlu olmasını isterseniz artık kullanılmayan işlevleri kullanmak gerekir. Onlar şimdi iş, ama gelecekte işe yaramayabilir. Veya daha da kötüsü, onlar trivially sabit olamaz kritik bir hata, sunulan, ancak tek bir işlevi tespit kapsamına alınamaz büyük bir değişiklik garanti var.

Senin durumunda, eregi PHP 6 kaldırılır, ve komut sadece başarısız olur. preg_match() or preg_match_all() kullanmak yerine.

Diğerleri de söylediğim gibi artık kullanılmayan işlevleri kullanmak gerekir, ve bunun yerine gebelik işlevlerine bakmak için.

Web uygulama PHP 5.2 ve üstü ile bir sunucu üzerinde çalışan olacak eğer Özellikle e-posta doğrulama için, bu PHP'nin filter (özellikle filter_var) işlevlerine bakarak değer olabilir. Filtre işlevleri de URL doğrulama ve diğer şeyler arasında IP adreslerini doğrulamak için kullanılabilir.

Sadece 'ben' değiştirici ile preg_match kullanın

echo eregi('[\w\.-_]+@[\w\.-_]+\.([a-z]{2,3})', $email) ? 'correct' : 'wrong';
echo preg_match('#[\w\.-_]+@[\w\.-_]+\.([a-z]{2,3})#i', $email) ? 'correct' : 'wrong';