我正在使用以下正则表达式来解析域...
$pattern = "/(\w+)\.(co.uk|uk|com|edu|gov)/";
preg_match($pattern, "something.abc.co.uk", $matches);
如何在co.uk|uk|com|edu|gov
的位置使用tld的文本文件/字符串,以便此正则表达式可用于验证多个tld。
请帮忙。感谢
答案 0 :(得分:0)
你的意思是应该有一个列出所有有效域名的txt文件吗?如果是这样,你可以这样试试:
// valid_domains.txt
co.uk|uk|com|edu|gov
// PHP file
/* Modified code starts */
$myfile = fopen("valid_domains.txt", "r") or die("Unable to open file!");
$valid_domains = fread($myfile,filesize("valid_domains.txt"));
fclose($myfile);
/*Modified code ends*/
$pattern = "/(\w+)\.(".$valid_domains.")/"; // Modify this line
$result = preg_match($pattern, "something.abc.co.uk", $matches);
var_dump($result); // int(1)
答案 1 :(得分:0)
这将读入一个文件,其中每个tld都在它自己的行上,清理它们并生成一个模式。
<?php
//read in the list of tlds
$list = file('listOfTLDs.txt');
//clean up list
array_walk($list, function(&$val){
// remove leading/trailing whitespace/newlines
$val = trim($val);
// escape preg special characters
$val = preg_quote($val, '/');
});
//make pipe separated list
$list = implode('|', $list);
//make the pattern
$pattern = "/(\w+)\.({$list})/";