PHP解析textarea输入的域名(用空格,逗号,换行符分隔)

时间:2009-08-26 11:44:52

标签: php regex dns

对于我的用户,我需要提供一个屏幕,他们可以在textarea中输入多个域名。用户可以将域名放在不同的行上,或者用空格或逗号分隔(甚至可以用分号 - 我不知道!)

我需要解析并识别带有扩展名的各个域名(这将是.com,其他任何内容都可以忽略)。

用户输入可以是:

asdf.com

qwer.com

和/或

wqer.com,gwew.com

和/或

ertert.com gdfgdf.com

没有人会输入像www.abczone.com这样的3级域名,但如果他们这样做,我只对提取abczone.com部分感兴趣。 (我可以有一个单独的正则表达式来验证/提取每个)。

2 个答案:

答案 0 :(得分:1)

这样做:

(\b[a-zA-Z][a-zA-Z0-9-]*)(?=\.com\b)

“查找字母的所有序列,后跟字母,数字或连字符,然后是.com,然后是分词。”

(您需要最后一点以防止从bim.com获取bim.command.com。)

Python测试用例,因为我没有可用的PHP测试环境:

DATA = "asdf.com\nx-123.com, gwew.com bim.command.com 123.com, x_x.com"
import re
print re.findall(r'(\b[a-zA-Z][a-zA-Z0-9-]*)(?=\.com\b)', DATA)
# Prints ['asdf', 'x-123', 'gwew', 'command']

答案 1 :(得分:0)

在这里,你可以使用i修饰符并删除所有大写的A-Z,如果你想:

\b([a-zA-Z][0-9a-zA-Z\-]{1,62})\.com\b