|
Автор |
Сообщение |
Boroda
Новенький
Зарегистрирован: 09.02.2006 Сообщения: 19 Откуда: Москва
|
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
пример немного некоректный, а что если будет URL:
http://dep.name.firma.com.ru? Тогда имя домена com.ru выходит и только
Где то был пример, поищу выложу |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Boroda
Новенький
Зарегистрирован: 09.02.2006 Сообщения: 19 Откуда: Москва
|
|
|
|
Да точно! Об этом я не подумал
Спасибо Денис, буду ждать примера. |
|
Вернуться к началу |
|
|
Павел
Участник тусовки
Зарегистрирован: 17.02.2006 Сообщения: 110 Откуда: Санкт-Петербург
|
|
|
|
Это можно сделать, не используя регулярных выражений, так:
<?php
$url = "http://www.domname.ru/file.htm";
$arr = parse_url($url);
echo $arr[host];
?> |
|
Вернуться к началу |
|
|
Павел
Участник тусовки
Зарегистрирован: 17.02.2006 Сообщения: 110 Откуда: Санкт-Петербург
|
|
|
|
Ну а с помощью регулярных выражений получить имя хоста можно так:
Код: |
<?php
$url = "http://www.domname.ru/file.html?quot;;
$patern = "#http://([^<]*)\/[-a-z0-9_:@&?=+,.!/~*'%$]*\.(html?|php|pl|cgi)#i";
if(preg_match($patern, $url, $matches)) echo $matches[1];
?>
|
|
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Павал, спасибо
А то я уже и забыл об этом посте
Добавить нечего |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Boroda
Новенький
Зарегистрирован: 09.02.2006 Сообщения: 19 Откуда: Москва
|
|
|
|
Павел, большое спасибо! |
|
Вернуться к началу |
|
|
Павел
Участник тусовки
Зарегистрирован: 17.02.2006 Сообщения: 110 Откуда: Санкт-Петербург
|
|
|
|
Всегда рад помочь |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Вот более развернутый пример
$fr_url = parse_url("http://www.dkws.org.ua/index.php?page=articles");
echo $fr_url[host]; // выводим доменное имя
echo $fr_url[port]; // выводим порт (если указан)
echo $fr_url[path]; // выводим путь
echo $fr_url[user]; // выводим имя пользователя (если указано)
echo $fr_url[password]; // выводим пароль (если указан)
echo $fr_url[query]; // выводим строку запроса (если указана) |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Boroda
Новенький
Зарегистрирован: 09.02.2006 Сообщения: 19 Откуда: Москва
|
|
|
|
Конечно функцию parse_url() легче применить, но вопрос был про регулярные выражения! Вот регулярное выражение, с помощью которого можно узнать имя ДОМЕНА!
Код: |
$url = "http://www.dkws.org.ua/phpbb2//viewtopic.php?t=91&sid=6129884012ab5468b46e2769e7b78463";
$patern = "(^(http://|https://|ftp://)?(w{3}.)?([a-zA-Z0-9.]+[a-zA-Z0-9]{2,63}))si";
if(preg_match($patern, $url, $matches)) echo $matches[3]; |
в данном примере будет напечатанно dkws.org.ua ч.т.д.
я ее сам родил |
|
Вернуться к началу |
|
|
yok
Участник тусовки
Зарегистрирован: 06.02.2008 Сообщения: 260 Откуда: krasnodar
|
|
|
|
$patern = "(^(http://|https://|ftp://)?(w{3}.)?([a-zA-Z0-9.]+[a-zA-Z0-9]{2,63}))si";
вообще думаю тут ошибка, я еще только начал изучать регулярные выражения по книге Джеффа Фридла,
[a-zA-Z0-9]{2,63} но думаю в этом почти подвыражении(не знаю как назвать, кроется одна ошибка, тут возможны и нижние подчеркивания и все что угодно и также /, поэтому [^ ]* это заменяет.
Инвертированный символьный клас.
Да и скажите пожалуйста, а почему описаны только 63 символа, на адресную строку какое то ограничение существует? Длину в смысле? |
|
Вернуться к началу |
|
|
yok
Участник тусовки
Зарегистрирован: 06.02.2008 Сообщения: 260 Откуда: krasnodar
|
|
|
|
Ой , простите, я не прав, Boroda правильно написал, он в подвыражении $3 описал ua и тем ограничил , но вообще то вопрос другой а зачем тогда 63? |
|
Вернуться к началу |
|
|
Anton99
Neo
Зарегистрирован: 26.11.2006 Сообщения: 1676
|
|
|
|
w{3} = 3 буквы?
Есть .travel, .aero, .info, .name, .mobi |
|
Вернуться к началу |
|
|
yok
Участник тусовки
Зарегистрирован: 06.02.2008 Сообщения: 260 Откуда: krasnodar
|
|
|
|
(w{3}.)?
Anton99, это подвыражение направлено на поиск сравнения с www., а ? вопросительный знак это необязательное выражение непосредственно перед ? т.е(...).
[a-zA-Z0-9]{2,63} ориентированно на поиск сравнения с такой конструкцией .travel, .aero, .info, .name, .mobi
но интервальный квантификатор до 63 символов , слишком много, поэтому я сразу и подумал что он описывает чтото такое /sadfasd/sadfsad/dsa222222/sdf/sdf
Рекомендую книгу http://www.phpfaq.ru/files/friedl.rar
Регулярные выражения как самостоятельный язык. |
|
Вернуться к началу |
|
|
Anton99
Neo
Зарегистрирован: 26.11.2006 Сообщения: 1676
|
|
|
|
yok, спасибо за книгу, почитаю. |
|
Вернуться к началу |
|
|
|
|