我有一个表格,我可以在其中获取由随机字符分隔的电子邮件列表:(有些会使用逗号,有些会使用分号甚至 *)。像这样的东西:
email1@example.com;email2@example.com,email3@example.com*email4@example.com
有没有办法用正则表达式爆炸字符串?
在大多数情况下,用户将键入相同的分隔符,但我不想强迫人们使用独占的分隔符。
您可以使用preg_split函数。
这是一个简单的示例和输出:
<?php
$str = "email1@example.com;email2@example.com,email3@example.com*email4@example.com";
$finalString=preg_split("/[*,;]/",$str);
var_dump($finalString);
?>
输出:
array
0 => string 'email1@example.com' (length=18)
1 => string 'email2@example.com' (length=18)
2 => string 'email3@example.com' (length=18)
3 => string 'email4@example.com' (length=18)
对于完整的解决方案,您可以使用preg_match_all()
$emails = preg_match_all(
"/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i",
$emails,
$matches
);
$matches[0]
array 将包含您的所有电子邮件。
看看它在行动:
(?<mail>[\w%+.-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6})