Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: php exec whois как вырезать нормальный УРЛ?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Webtest
Отправлено: 02 Сентября, 2014 - 14:56:07
Post Id


Посетитель


Покинул форум
Сообщений всего: 286
Дата рег-ции: Июнь 2014  


Помог: 0 раз(а)




Есть код:
PHP:
скопировать код в буфер обмена
  1. exec("whois "."$url", $output, $return_var); // запускаем комманду whois
  2.         foreach ($output as $whois) {
  3.                 if (mb_strpos($whois, 'domain:') === 0) {
  4.                         $substrElementDomen = mb_substr($whois, mb_stripos($whois, 'domain:')+7);
  5.                 }
  6.                 if (mb_strpos($whois, 'created:') === 0) {
  7.                         $substrElementOld = mb_substr($whois, mb_stripos($whois, 'created:')+8);
  8.                 }
  9.         }
  10.         echo $substrElementOld;
  11.         echo $substrElementDomen;

Где $url - урл сайта. Дело в том, что функция ехес берет только голый урл, например, php.su.
Если уро будет как www.php.su ехес выдаст ошибку.
Как побрить урл для любого вида сайтов?
Я пробовал вот так:
PHP:
скопировать код в буфер обмена
  1.         $parseUrl = parse_url($url);
  2.         if (mb_strpos($parseUrl['host'], 'www.') === 0) {
  3.                 $parseUrlHost = substr($parseUrl['host'], 4);
  4.         } elseif (mb_strpos($parseUrl['host'], 'ru.') === 0) {
  5.                 $parseUrlHost = substr($parseUrl['host'], 3);
  6.         } else {
  7.                 $parseUrlHost = $parseUrl['host'];
  8.         }

Но в этом случае, почему-то, не работает сайт википедия, вот, например, страничка:
$url = 'https://ru.wikipedia.org/wiki/%D0%90%D0%B4%D0%B2%D0%BE%D0%BA%D0%B0%D1%82';
В общем, поясните как сделать?
 
 Top
Мелкий Супермодератор
Отправлено: 02 Сентября, 2014 - 15:26:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Выкусываете всё, начиная со второй точки с конца.
Если вдруг нужны домены третьего уровня, то проверяете, входит ли домен второго уровня в белый список доменов, для которых вы можете обрабатывать whois.


-----
PostgreSQL DBA
 
 Top
Webtest
Отправлено: 02 Сентября, 2014 - 16:08:00
Post Id


Посетитель


Покинул форум
Сообщений всего: 286
Дата рег-ции: Июнь 2014  


Помог: 0 раз(а)




Мелкий, еще вопрос, почему не работают через whois ни wikipedia.org, ни ru.wikipedia.org?
В хосте выводится именно ру.википедия, но данные через whois выдают ошибку.
 
 Top
Мелкий Супермодератор
Отправлено: 02 Сентября, 2014 - 16:56:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Почему wikipedia.org не работает?
Цитата:
user@brtech-ws-03:~$ whois wikipedia.org
Domain Name:WIKIPEDIA.ORG
Domain ID: D51687756-LROR
Creation Date: 2001-01-13T00:12:14Z
Updated Date: 2012-05-09T00:25:29Z
Registry Expiry Date: 2016-01-13T00:12:14Z
Sponsoring Registrar:MarkMonitor Inc. (R37-LROR)
и т.д.


ru.wikipedia.org - а откуда по этому доменному имени данные запрашивать? Если эта самая вики не врёт, то .org обслуживается централизованно. Потому совершенно логично, что ничего о ru.wikipedia.org не знает. Только о wikipedia.org, который в этой зоне зарегистрирован. Читайте RFC 3912, подробно не разбирался.


-----
PostgreSQL DBA
 
 Top
Webtest
Отправлено: 02 Сентября, 2014 - 19:44:03
Post Id


Посетитель


Покинул форум
Сообщений всего: 286
Дата рег-ции: Июнь 2014  


Помог: 0 раз(а)




Мелкий, странно, почему у меня wikipedia.org не берет?
Вот код сделал:
PHP:
скопировать код в буфер обмена
  1. $url = 'http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0';
  2. $parseUrl = parse_url($url);
  3. $lastDot = mb_strrpos($parseUrl['host'], '.');
  4. $subDot = mb_substr($parseUrl['host'], 0, $lastDot);
  5. $secondDot = mb_strrpos($subDot, '.');
  6. if ($secondDot != FALSE) {
  7.         $execUrl = mb_substr($parseUrl['host'], $secondDot+1);
  8. } else {
  9.         $execUrl = $parseUrl['host'];
  10. }
  11.  
  12. exec("whois "."$execUrl", $output, $return_var); // запускаем комманду whois
  13. foreach ($output as $whois) {
  14.         if (mb_strpos($whois, 'domain:') === 0) {
  15.                 $substrElementDomen = mb_substr($whois, mb_stripos($whois, 'domain:')+7);
  16.         }
  17.         if (mb_strpos($whois, 'created:') === 0) {
  18.                 $substrElementOld = mb_substr($whois, mb_stripos($whois, 'created:')+8);
  19.         }
  20. }
  21.  

В этом случае $execUrl = wikipedia.org, а сама функция exec выдает ошибку, что УРЛ неверный.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB