«Неизвестный модификатор« g »в …» при использовании preg_match в PHP?

Это регулярное выражение, которое я пытаюсь использовать:

/^(\w|\.|-)+?@(\w|-)+?\.\w{2,4}($|\.\w{2,4})$/gim 

Я нашел его на этом сайте , и он отлично работает, когда я попробую его там. Но как только я помещаю его в свой код, я получаю это сообщение:

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

Может ли кто-нибудь объяснить, что не так, и почему он работает на этом веб-сайте, а не в моем коде?

Для preg_match не существует модификатора g . Вместо этого вы должны использовать preg_match_all .

Поэтому вместо:

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

использовать:

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