|
|
|
| Всем привет, никак не могу разобраться в следующей задаче. Чтобы пользователя не тревожить, всякими напоминаниями о не корректном вводе, я хочу на сервере обрабатывать вводимый им url, а именно, если он введет:
...........
- http://site.ru/ - должно вырезать site.ru
- http://site.ru - должно вырезать site.ru
- site.ru/ - должно вырезать site.ru
- site.ru - так и останется
- http://www.site.ru/ - должно вырезать www.site.ru
- http://www.site.ru - должно вырезать www.site.ru
- www.site.ru/ - должно вырезать www.site.ru
- www.site.ru - так и останется
...........
Т.е. мне важны www. если они есть вводимом url, а также сам домен, никаких слешей в конце и другого хлама, чисто url главной странички с www. или без www. если присутствовало
Также после обрезания проверить на корректность
Спасибо | |
|
|
|
|
|
|
|
для: TetRiska
(20.04.2013 в 15:27)
| | Для этого не нужны РВ. Для этого нужна одна только функция: parse_url() | |
|
|
|
|
|
|
|
для: Sfinks
(20.04.2013 в 17:27)
| |
$str = parse_url("http://site.ru/");
echo '<pre>';
print_r($str['host']);
echo '</pre>';
//site.ru
|
$str = parse_url("site.ru");
echo '<pre>';
print_r($str['host']);
echo '</pre>';
//Notice: Undefined index: host in
|
| |
|
|
|
|
|
|
|
для: TetRiska
(20.04.2013 в 18:00)
| | Ну можно же немного подтолкнуть парсер к тому чтобы он правильно определял какая часть адреса чем является....
<?php
$url = "site.ru";
$host = parse_url( preg_match('#^https?://#',$url) ? $url : 'http://'.$url, PHP_URL_HOST )
or die('Не верное имя домена');
echo $host;
?>
|
| |
|
|
|
|
|
|
|
для: Sfinks
(20.04.2013 в 19:32)
| |
$url = "://www.site.ru/";
|
уже не сработает, хотя вполне можно было вырезать
даже при успехе, урл бы пришлось все равно проверять, чтоб ничего лишнего (кавычки, запятые)
Пошел путем реги, все же универсальней
В общем рега готова:
/(?:[\w\d][-\w\d]*\.)+(?:biz|com|info|name|net|org|[a-z]{2})/i
|
Но есть в ней мелкие огрехи:
в начале доменного имени пропускает
_ or __ - одно или много нижних подчеркиваний
в центре доменного имени пропаускает
_ or __ - одно или много нижних подчеркиваний
-- - много тире
в конце доменного имени пропускает
_ or __ - одно или много нижних подчеркиваний
- or -- - одно или много тире
|
т.е.
_popasike.ru - пропустило
__popasike.ru - пропустило
-popasike.ru - не пропустило
--popasike.ru - не пропустило
pop_asike.ru - пропустило
pop__asike.ru - пропустило
pop-asike.ru - пропустило
pop--asike.ru - пропустило
popasike_.ru - пропустило
popasike__.ru - пропустило
popasike-.ru - пропустило
popasike--.ru - пропустило
|
помогите допилить :) | |
|
|
|
|
|
|
|
для: TetRiska
(20.04.2013 в 20:18)
| | /.*((|www\.)\b\w+?\.[a-z]{2,5}).*/
Смотрим, что остается в $1. | |
|
|
|
|
|
|
|
для: Deed
(20.04.2013 в 22:31)
| | к чему эта регулярка? | |
|
|
|
|
|
|
|
для: TetRiska
(20.04.2013 в 23:30)
| | Она была написана второпях, "на колене".
Вот решение проблемы: http://stackoverflow.com/questions/1755144/how-to-validate-domain-name-in-php
Особенно прекрасен второй ответ с рейтингом 7:
<?php
$domain = "stackoverflow.com";
if(filter_var(gethostbyname($domain), FILTER_VALIDATE_IP))
{
return TRUE;
}
?>
|
| |
|
|
|
|
|
|
|
для: Deed
(21.04.2013 в 08:46)
| | проверить пока нет возможности, но видать вы меня не поняли, мне нужно вырезать в первую очередь с отбросом лишних символов прочего хлама.......а если не удастся вырезать, возвращаем фолс, а насколько вижу, ваш пример только возвращает тру или фолс и все, потом все равно придется делать вырезание | |
|
|
|
|
|
|
|
для: TetRiska
(22.04.2013 в 12:27)
| | Держите:
[a-z][-_]?[a-z\d]+?[^_-]\.[a-z]{2,5}
|
можете проверить на вашем списке:
_popasike.ru - пропустило
__popasike.ru - пропустило
-popasike.ru - не пропустило
--popasike.ru - не пропустило
pop_asike.ru - пропустило
pop__asike.ru - пропустило
pop-asike.ru - пропустило
pop--asike.ru - пропустило
popasike_.ru - пропустило
popasike__.ru - пропустило
popasike-.ru - пропустило
popasike--.ru - пропустило
|
тест: http://phpfiddle.org/lite/code/06w-pe3 | |
|
|
|
|
|
|
|
для: Deed
(22.04.2013 в 13:52)
| | popa.sike--.ru - пропустило
будет popa.sike ))
может лучше мою модернизировать, чтоб подчеркивания и тире не пропускало там где не нужно?
и почему вы записали a-z, а не \w | |
|
|
|
|
|
|
|
для: TetRiska
(22.04.2013 в 17:32)
| | Потому, что \w включает в себя символ нижнего подчеркивания "_". И, насколько мне не изменяет интуиция, и тире "-", и "_" может быть в адресе только в одном экземпляре.
(Или нет?)
Более того, начинаться и заканчиваться имя домена должно на букву или цифру.
Это во-первых.
Во-вторых, нигде не было сказано, что возможны субдомены в адресах.
И в-третьих, что это за ресурс такой? Для садистов? Или для страдающих тремором и не попадающих по нужным клавишам юзеров??
Ладно, подумаем...
вот:
/([a-z][-_]?[a-z\d]+?[^_-]\.){0,}[a-z][-_]?[a-z\d]+?[^_-]\.[a-z]{2,5}/i
|
для субдоменов
Ну и вот: http://phpfiddle.org/lite/code/8r6-sct - регулярки для очистки доменных имен от издевательств.
Универсум:
<?php
function refresh_links($badstr){
$strong=preg_replace("/^[^a-z\d]/i","",$badstr);
$str=preg_replace("/[^a-z\d]$/i","",$strong);
$str=preg_replace("/[^a-z\d](?=\.)/i","",$str);
$str=preg_replace("/(?<=\.)[^a-z\d]/i","",$str);
$str=preg_replace("/[^\w\d-\.]/i","",$str);
$str=preg_replace("/([_\.-])+/","$1",$str);
return $str;
}
$bad_str="_p---opa.si++__ke--.ru";
$strong_str=refresh_links($bad_str);
echo $strong_str;
?>
|
| |
|
|
|
|
|
|
|
для: Deed
(22.04.2013 в 22:12)
| | /([a-z][-_]?[a-z\d]+?[^_-]\.){0,}[a-z][-_]?[a-z\d]+?[^_-]\.[a-z]{2,5}/i
а можно его еще доработать, что оно корректно обрабатывало сайты, типа:
http://xn----7sbajjbec0dd3k7b.xn--p1ai/vse_serii_podryad/multiki
http://xn-----7kcabbec2afz1as3apmjtgqh4hrf.xn--p1ai/dlya-komyutera/viber-dlya-windows-7 | |
|
|
|
|
256.7 Кб |
|
|
для: TetRiska
(20.04.2013 в 15:27)
| | Интернет-сервис OF.ua специализируется на предоставлении услуг по регистрации имен для сайтов в приватных доменах OF.ua, OT.ua, PRI.ua, ViD.ua, WS.ua.
https://of.ua/ru/ | |
|
|
|
|
|
|
|
для: vip.beggins
(22.07.2016 в 12:06)
| | Создайте свой бренд в интернете. Купить домен на https://of.ua/
к нему получить такое же имя для почты и бесплатную сайт визитку. | |
|
|
|
|
|
|
|
для: werfitr
(13.10.2016 в 17:52)
| | Чтобы купить домен нужно проверить домен на занятость. проверка домена на https://of.ua/ Пакет All inclusive Доменное имя + имя почты + сайт-визитка бесплатно | |
|
|
|