http://www.trafficestimate.com/,http://getclicky.com/,http://technotarget.com/find-out-who-is-visiting-your-site-website-traffic-tools/,http://pmetrics.performancing.com/
以上是修剪的示例网站。我只想从上面提取域名,例如:trafficestimate.com,getclicky.com,technotarget.com,performancing.com
如何使用PHP执行此操作?我正在谈论更多这样的网址,而不仅仅是上面的网址。
答案 0 :(得分:7)
当然,让我们看看如何做到这一点。首先,我们需要将这些URL分解为单个组件。我们可以使用explode命令来执行此操作:
$urls = "http://www.trafficestimate.com/,http://getclicky.com/,http://technotarget.com/find-out-who-is-visiting-your-site-website-traffic-tools/,http://pmetrics.performancing.com/";
$url_array = explode(",", $urls);
这样做就是获取您拥有的URL,并通过在逗号上分隔它们将它们放入数组中。让我们看看样本结果是什么样的:
Array
(
[0] => http://www.trafficestimate.com/
[1] => http://getclicky.com/
[2] => http://technotarget.com/find-out-who-is-visiting-your-site-website-traffic-tools/
[3] => http://pmetrics.performancing.com/
)
漂亮呃?现在,下一步是遍历所有结果,这可以通过简单的foreach循环完成。但在我们开始之前,我们需要一个地方来存储结果域。我们声明一个空数组:
$domains = array();
现在我们可以循环结果:
$domains = array();
foreach($url_array as $url) {
// actions here
}
那么,我们需要为每个结果做些什么呢?我们需要域名。 PHP实际上有一个很好的函数来解析名为parse_url的URL。替代方案是使用更复杂的措施,所以这很好用!这是我们更新的代码:
$domains = array();
foreach($url_array as $url) {
$parsed_url = parse_url($url);
}
现在,让我们看看parse_url
给我们的是什么:
Array
(
[scheme] => http
[host] => pmetrics.performancing.com
[path] => /
)
请注意主持人?这是我们试图获得的域名。所以我们将它添加到我们的域数组中:
$domains = array();
foreach($url_array as $url) {
$parsed_url = parse_url($url);
$domains[] = $parsed_url['host'];
}
现在让我们看看结果如何:
Array
(
[0] => www.trafficestimate.com
[1] => getclicky.com
[2] => technotarget.com
[3] => pmetrics.performancing.com
)
就是这样! $domain
现在拥有所有域名。如果我们想用上面的逗号分隔打印它们,我们可以使用implode命令来执行此操作:
echo implode(',', $domains);
这给了我们:
www.trafficestimate.com,getclicky.com,technotarget.com,pmetrics.performancing.com
这就是它的全部!以下是供您参考的完整代码清单:
$urls = "http://www.trafficestimate.com/,http://getclicky.com/,http://technotarget.com/find-out-who-is-visiting-your-site-website-traffic-tools/,http://pmetrics.performancing.com/";
$url_array = explode(",", $urls);
$domains = array();
foreach($url_array as $url) {
$parsed_url = parse_url($url);
$domains[] = $parsed_url['host'];
}
echo implode(',', $domains);
答案 1 :(得分:2)
$input = explode(',', $input);
然后为每个值:
$input[$k] = preg_replace('/^https?://(?:www\.)?/i', '', $input[$k]);
答案 2 :(得分:2)
答案 3 :(得分:1)
<?php
// get host name from URL
preg_match("/^(http:\/\/)?([^\/]+)/i",
"http://www.example.com/index.html", $matches);
$host = $matches[2];
// get last two segments of host name
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
echo "domain name is: {$matches[0]}\n";
/* Output is example.com */
?>
答案 4 :(得分:0)
或者,您可以使用此功能仅获取域名。
function GetDomain($url)
{
$nowww = ereg_replace('www\.','',$url);
$domain = parse_url($nowww);
if(!empty($domain["host"]))
{
return $domain["host"];
} else
{
return $domain["path"];
}
}
答案 5 :(得分:0)
$urls = 'http://www.trafficestimate.com/,http://getclicky.com/,http://technotarget.com/find-out-who-is-visiting-your-site-website-traffic-tools/,http://pmetrics.performancing.com/';
$hosts = array_map(function ($url) { return parse_url($url, PHP_URL_HOST); }, explode(',', $urls));
var_dump($hosts);
请注意,这会返回pmetrics.performancing.com
,例如,这是正确的方法。没有规则只说TLD和第一个子域是“域”,完整的主机名是域。
答案 6 :(得分:0)
<?php
$input = explode(',', $input);
$urls = array();
foreach($input as $item){
$url = parse_url($item);
$urls[] = $item[host];
}
?>