我正试图从字符串中获取电子邮件:
$string = "bla bla pickachu@domain.com MIME-Version: balbasur@domain.com bla bla bla";
$matches = array();
$pattern = ''b[A-Z0-9._%+-]+@[A-Z0-9.-]+'.[A-Z]{2,4}'b';
preg_match_all($pattern,$string,$matches);
print_r($matches);
我得到的错误是:
分隔符不能是字母数字或反斜杠
我从这里得到了regex语法http://www.regular-expressions.info/email.html
像这个
$pattern = '/[A-Z0-9._%+-]+@[A-Z0-9.-]+'.[A-Z]{2,4}'b/i';
或更小的版本:)
$pattern = '/[a-z'd._%+-]+@[a-z'd.-]+'.[a-z]{2,4}'b/i';
使用PCRE正则表达式函数时,需要用分隔符将模式括起来:
PHP分隔符
常用的分隔符是正斜杠(/)、哈希符号(#)和波浪号(~)。以下是有效分隔的所有示例图案。
/foo bar/
#^[^0-9]$#
+php+
%[a-zA-Z0-9_-]%
然后您必须将此行更正为:
$pattern = '/'b[A-Z0-9._%+-]+@[A-Z0-9.-]+'.[A-Z]{2,4}'b/';
或
$pattern = '#'b[A-Z0-9._%+-]+@[A-Z0-9.-]+'.[A-Z]{2,4}'b#';
您只需要用一个合适的分隔符来包装您的模式,比如正斜杠。像这样:
$pattern = '/'b[A-Z0-9._%+-]+@[A-Z0-9.-]+'.[A-Z]{2,4}'b/';