#php
#php
Вопрос:
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? Я говорю о гораздо большем количестве веб-адресов, подобных этому, а не только о приведенном выше.
Ответ №1:
Конечно, давайте посмотрим, как это можно сделать. Во-первых, нам нужно разбить эти 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 есть хорошая функция для анализа URL-адресов, которая называется parse_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);
Ответ №2:
вот так:
$input = explode(',', $input);
и затем для каждого значения:
$input[$k] = preg_replace('/^https?://(?:www.)?/i', '', $input[$k]);
Ответ №3:
Ответ №4:
<?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 */
?>
Ответ №5:
В качестве альтернативы вы можете использовать эту функцию, чтобы получить только домен.
function GetDomain($url)
{
$nowww = ereg_replace('www.','',$url);
$domain = parse_url($nowww);
if(!empty($domain["host"]))
{
return $domain["host"];
} else
{
return $domain["path"];
}
}
Ответ №6:
$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 и первый поддомен являются «доменом», полное имя хоста — это домен.
Ответ №7:
<?php
$input = explode(',', $input);
$urls = array();
foreach($input as $item){
$url = parse_url($item);
$urls[] = $item[host];
}
?>