我有一个表单,我可以获取由随机字符分隔的电子邮件列表: (有些人会使用逗号,其他人会使用分号甚至*)。像这样:
email1@example.com;email2@example.com,email3@example.com*email4@example.com
有没有办法用正则表达式来爆炸字符串?
在大多数情况下,用户会输入相同的分隔符,但我不想强迫拥有独占分隔符的用户。
答案 0 :(得分:3)
这样的事情应该让你开始:
<?php
$test = preg_split ('/(;|,|\*)/', 'email1@example.com;email2@example.com,email3@example.com*email4@example.com');
var_dump($test);
答案 1 :(得分:1)
您可以使用preg_split功能。
这是一个简单的示例&amp;输出:
<?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)
答案 2 :(得分:1)
要获得完整的解决方案,您可以使用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]
数组将包含您的所有电子邮件。
答案 3 :(得分:0)
查看 in action :
(?<mail>[\w%+.-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6})