使用正则表达式

时间:2009-07-08 15:08:35

标签: php regex

我正在尝试使用正则表达式匹配来自我自己网站的电子邮件。使用preg_match_all($pattern,$site,$array)我得到的结果是重复的。例如,使用:

$pattern = '/[\w-]+@([\w-]+\.)+[\w-]+/i';

我明白了:

Array
(
    [0] => uk@example1.com
    [1] => uk@example2.com
    [2] => sales@woot.com
    [3] => sales@woot.com
    [4] => info@regex.com
    [5] => info@regex.com
    [6] => direct@yadayada.com.au
    [7] => direct@yadayada.au
    [8] => adrian@blahblah.com
    [9] => adrian@blahblah.com
)

那么,为什么我会重复?这是我的正则表达式的问题吗?

我正在搜索的字符串是使用file_get_contents()方法的URL。我检查了字符串以确保它没有拉两次页面。

2 个答案:

答案 0 :(得分:7)

如果你匹配HTML,你可能会匹配a标签中的href和a标签的内容。

<a href="mailto:uk@example1.com">uk@example1.com</a>

答案 1 :(得分:2)

如果你正在处理一个足够小的数据集,你可以将数组抛入array_unique(),这样你就可以返回一个删除了重复项的数组。