【发布时间】:2015-05-23 08:34:51
【问题描述】:
更新:
我正在使用这个正则表达式:
/[^a-z^-^0-9^@^%^\/^:^\.^-]((?<!w\.)(?!w+\.)([0-9a-z][0-9a-z\-]*\.){2,}[a-z]+)(["|\s|<]|$)/i
当字符串只是域而没有其他内容时,正则表达式有一个小问题,在新行中相互列出
例如:
$string = 'sub84.example4.com
sub-example.example84.net
sub-84example.example-h1.org
www-example4124.domain.com
sub.example-www.com';
所有域都应该匹配,但他当前的正则表达式只匹配sub-example.example84.net和www-example4124.domain.com
我还想添加更多条件:
1) 域的字母必须小,不能大写(当前的不在乎)
例如:Sub.example.Com 不行。
2) 在域之前没有 =SPACE (SPACE (" :SPACE,在域之后没有 SPACE) 或 SPACE= ") SPACE:。
前:
$string = '
text = sub1.example.com text
text ( sub2.example.com text
text sub3.example.com = text
text sub4.example.com ) text
text ("sub5.example.com text
text sub6.example.com") text
text : sub7.example.com text
text sub8.example.com : text
';
没有一个是好的
3) 排除 .info .biz .tv tlds
谢谢。
【问题讨论】:
-
提供您尝试解决此问题的尝试。
-
先用DOMDocument提取href属性和纯文本部分。之后且仅在应用模式之后。
-
@hwnd 这很糟糕(如果不是最糟糕的话),这就是我需要帮助的原因..但无论如何,我把我的代码放在这个问题上,谢谢。
-
提出一个新问题,而不是重复使用旧问题。
-
你真正的目的是什么?例如-您想从网页获取所有域,您有一个 tld 区域文件并希望从那里解析所有域或...(在此处输入一些内容),因为这可能比使用昂贵的操作更好,例如用正则表达式匹配文本?
标签: php regex preg-match-all subdomain