php中用不同字符分隔的电子邮件的分解列表


explode list of emails separated with different characters in php

我有一个表单,可以在其中获得由随机字符分隔的电子邮件列表:(有些会使用逗号,有些会使用分号甚至*)。类似这样的东西:

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})