$email = '[email protected]';
if(preg_match(\w+(@business.com)\z), $email){code goes here}
Я пытаюсь выполнить код в разделе "код идет здесь" этого условия, когда $ email содержит адрес электронной почты, который заканчивается именно на @business.com
.
Я чувствую, что я, возможно, неправильно понимаю, как работает preg_match
, но я не могу найти никакой информации о том, почему оператор if оценивает как false.
Есть много, много примеров и других людей, имеющих схожие проблемы, но решение их проблем не вызывает каких-либо проблем с моим кодом.
Я работал над этим примером:
http://php.net/manual/en/function.preg-match.php
<?php
// The "i" after the pattern delimiter indicates a case-insensitive search
if (preg_match("/php/i", "PHP is the web scripting language of choice.")) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
?>
Нет необходимости использовать regex
вы можете просто использовать функцию strstr
для PHP, например:
if(strstr('[email protected]',"@") == "@business.com"){
// code goes here
}
или для использования регулярного выражения вы можете просто использовать Positive Lookbehind, например, как
if(preg_match('~(?<=\w)(@business.com)~',$string)!==false){
// code goes here
}
preg_match(\w+(@business.com)\z)
имеет по крайней мере две проблемы. 1. без кавычек вокруг регулярных выражений, 2. без разделителей.