我在页面<a href='mailto:xyz@xyz.com'>
上的电子邮件格式如下
我试图匹配正则表达式
我目前正在使用这个:
$pattern = '#a[^>]+href="mailto:([^"]+)"[^>]*?>#is';
preg_match_all($pattern, $data, $matches);
foreach ($matches[1] as $key => $email) {
$emails[] = $email;
}
但结果不匹配。 $emails
为NULL
。
我只是学习正则表达式,所以请原谅这个问题! 有人可以解释为什么它不起作用并建议改变?感谢
答案 0 :(得分:1)
问题在于,您的示例中使用的是单引号'
,而在正则表达式中,它正在寻找双引号"
。
将您的模式更改为:
$pattern = '#a[^>]+href=\'mailto:([^\']+)\'[^>]*?>#is';
会做的伎俩。
答案 1 :(得分:1)
只需添加双引号的支持,如@ Linus-Kleen和@thetaiko所说:
$pattern = '#a[^>]+href=[\'"]mailto:([^\'"]+)[\'"][^>]*?>#is';
答案 2 :(得分:0)
正则表达式有效,但你不检查'(单引号)和“(双引号)这样
<a href='mailto:xyz@xyz.com'>
不会匹配,但
<a href="mailto:xyz@xyz.com">
意愿。
只需将正则表达式更改为
即可'#a[^>]+href=[\'"]+mailto:([^"]+)[\'"]+[^>]*?>#is'
会做到这一点!