我有一个表单,可以在其中获得由随机字符分隔的电子邮件列表:(有些会使用逗号,有些会使用分号甚至*)。类似这样的东西:
email1@example.com;email2@example.com,email3@example.com*email4@example.com
有没有一种方法可以用正则表达式分解字符串?
在大多数情况下,用户会键入相同的分隔符,但我不想强迫人们使用唯一的分隔符。
这样的东西应该会让你开始:
<?php
$test = preg_split ('/(;|,|*)/', 'email1@example.com;email2@example.com,email3@example.com*email4@example.com');
var_dump($test);
文档和演示
您可以使用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]
数组将包含您的所有电子邮件。
在操作中查看:
(?<mail>[w%+.-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6})