2010-08-26 17 views
58

Bu benim kullanmaya çalışıyorum regex geçerli:PHP'de preg_match kullanırken "Bilinmeyen değiştirici 'g' in ..."?

/^(\w|\.|-)[email protected](\w|-)+?\.\w{2,4}($|\.\w{2,4})$/gim 

Ben this site buldum ve orada denemek zaman iyi çalışıyor. o Web sitesinde ve benim kodunda çalışıyor neden

Warning: preg_match() [function.preg-match]: Unknown modifier 'g' in C:\xampp\htdocs\swebook\includes\classes.php on line 22 

kimse neyin yanlış olduğunu anlatmak ve Can: Ama en kısa sürede benim kodunda yerleştirin olarak, bu mesaj çıktı?

+1

Size daha iyi yardım verebilir. Ve sen * daha iyi yardıma ihtiyacın var - ya da regex, her neyse. Bu sitede bulunan tüm iyi yazılmış e-posta ifadelerinden en kötüsünü seçmiş olabilirsiniz. :/ –

+2

FYI, regexp'iniz bu tür e-postaları doğrulayacak: "-.-.-.--. @ - some--domain--.com" ve bu tür VALID postaları doğrulanmayacaktır: "bilgi @ subdomain.domain.com". Son ama en az değil \ W ÇOK TEHLİKELİ neden PHP preg kullanımları Perl Uyumlu Düzenli İfadeler ve NOT POSIX gibi Javascript. Eğer PHP, US/UK lokalize olmayan sunucuda çalışıyorsa \ w, aynı zamanda vurgulu harflerle de eşleşecektir, böylece "àèìòù@domain.com" ifadesinin eşleşmesi geçerli bir postadır. Daha fazla bilgi için buradan okuyun: http://it.php.net/manual/en/function.preg-replace.php#92443 –

cevap

108

preg_match için g değiştiricisi yoktur. Bunun yerine, preg_match_all işlevini kullanmanız gerekir.

Bunu yerine:

preg_match("/^(\w|\.|-)[email protected](\w|-)+?\.\w{2,4}($|\.\w{2,4})$/gim", ....) 

kullanım: Size regex yapmaya çalıştığını tam olarak ne bilse

preg_match_all("/^(\w|\.|-)[email protected](\w|-)+?\.\w{2,4}($|\.\w{2,4})$/im", ....)