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.SU

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


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

> Без описания
kuzmit4
Отправлено: 26 Мая, 2015 - 16:46:47
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Март 2015  


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




Есть скрипт который обрезает все лишнее из ссылки, и оставляет только домен.
PHP:
скопировать код в буфер обмена
  1. $url = "http://site.ru/category/test-page.html";
  2. if (preg_match ("/^(http[s]{0,1}:\/\/){0,1}(www.){0,1}([a-zA-Zа-яёА-ЯЁ0-9_-]+\.[a-zA-Zа-яёА-ЯЁ]{2,4})\/{0,1}.*$/u", $url, $h))
  3. $site = $h[3];

Т.е. вбиваем ссылку он выдает site.ru что в принципе и нужно, но на днях обнаружил косяк.
Если ссылка с доменом третьего уровня например "site.com.ru" - то скрипт возвращает "site.com"
Как сделать чтобы домены третьего уровня обрезались без косяков ?
 
 Top
LIME
Отправлено: 26 Мая, 2015 - 17:13:12
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




 
 Top
Мелкий Супермодератор
Отправлено: 26 Мая, 2015 - 17:17:51
Post Id



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


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


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




Как-то сложно и грубо нарушает RFC. Обижает .travel, не говоря уж про new gTLD

Банально parse_url не подходит?


-----
PostgreSQL DBA
 
 Top
kuzmit4
Отправлено: 26 Мая, 2015 - 22:54:48
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Март 2015  


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




Всем спасибо за помощь!
 
 Top
kuzmit4
Отправлено: 27 Мая, 2015 - 16:29:19
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Март 2015  


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




Вылез косяк, parse_url не подошел т.к. если указать домен в чистом виде без http:// - то он выводит пустую строку.

В общем сделал все с нуля, получился следующий код.
Пока все работает нормально.
В чем может быть косяк такого кода ?
PHP:
скопировать код в буфер обмена
  1. //      $url = "http://test.ru"; // ок
  2. //      $url = "http://www.test.ru/cat/page.html"; // ок
  3. //      $url = "test.ru/cat/page.html"; // ок
  4. //      $url = "www.test.ru"; // ок
  5. //      $url = "http://тест.рф/cat/page.html"; // ок
  6. //      $url = "тест.рф/"; // ок
  7.  
  8.         // Обрезать домен (новое2)
  9.         $site_link = array("http://", "www.", "//"); // лишнее
  10.         $cute1 = str_replace($site_link, "", $url); // обрезаем лишнее в начале
  11.         $cute2 = explode("/", $cute1); // обрезаем домен после слэш
  12.         $site = $cute2[0];
  13.         echo $site;
 
 Top
IllusionMH
Отправлено: 27 Мая, 2015 - 16:42:34
Post Id



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


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




kuzmit4, HTTPS уже не в почете? Ха-ха
А вообще что мешает руками добавить протокол в случае если его нет, а потом парсить?
 
 Top
dcc0
Отправлено: 27 Мая, 2015 - 16:46:53
Post Id


Участник


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


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




Цитата:
Помогите поправить обрезание домена

Таки и туда они добрались = )


-----
Март 2021. Бросил программирование
 
 Top
kuzmit4
Отправлено: 27 Мая, 2015 - 16:47:35
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Март 2015  


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




IllusionMH пишет:
kuzmit4, HTTPS уже не в почете? Ха-ха
А вообще что мешает руками добавить протокол в случае если его нет, а потом парсить?

https забыл, спасибо.
 
 Top
Sail
Отправлено: 27 Мая, 2015 - 17:06:16
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


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




kuzmit4, вот такой демонстрационный примерчик:
Спойлер (Отобразить)
 
 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