0

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

email1@example.com;email2@example.com,email3@example.com*email4@example.com

有没有办法用正则表达式爆炸字符串?

在大多数情况下,用户将键入相同的分隔符,但我不想强迫人们使用独占的分隔符。

4

4 回答 4

3

这样的事情应该让你开始:

<?php
$test = preg_split ('/(;|,|\*)/', 'email1@example.com;email2@example.com,email3@example.com*email4@example.com');

var_dump($test);

文档演示

于 2012-08-27T16:08:16.763 回答
1

您可以使用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)
于 2012-08-27T16:20:01.267 回答
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]array 将包含您的所有电子邮件。

于 2012-08-28T05:21:21.957 回答
0

看看它在行动

(?<mail>[\w%+.-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6})
于 2012-08-27T16:10:50.567 回答