регулярка проверки адреса сайта

Печать RSS
578


Дух
0
<?php 
function vurl($url) {
$url = trim ( preg_replace ("/[ˆ\x20-\xFF]/", "", @strval ($url)));
if ( strlen ($url) == 0) { return error; }
if ( !preg_match ("~ˆ(?:( ?:https?|ftp|telnet)://(?:[a-z0-9_-]{1,32}".
"(?::[a-z0-9_-]{1,32})?@)?)?(?:( ?:[a-z0-9-]{1,128}\.)+(?:com|net|".
"org|mil|edu|arpa|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)(?:( ?".
"!0[ˆ.]|255)[0-9]{1,3}\.){3}(?!0|255)[0-9]{1,3})(?:/[a-z0-9.,_@%&".
"?+=\~/-]*)?(?:#[ˆ '\"&<>]*)?$~i",$url,$ok)) { return error; } 
if ( !strstr ($url,"://")) $url = "http://".$url;
$url = preg_replace ("~ˆ[a-z]+~ie", "strtolower('\\0')", $url);
return $url;
}
    // ранее $url получен нами из формы
$url = vurl ($url);
if ($url != 'error'){ print "URL введен правильно";}
?>

2000 лет д.н.э.
0
тру, глянь внимательно на тут регулярку что я привел ранее, она проще но суть та же, проблема в &amp; ", не в & " <>, хтмлсущности, или как их там, в текстеsmile твоя регулярка будет ломать &amp; &quot на & и amp;

Землянин
0
25, да его функция вообще бред

Дух
0
Fuelen (Сегодня / 11:42)
25, да его функция вообще бред
Напиши не бред.

Землянин
0
Зачем велосипед?
http://ua.php.net/manual/en/book.filter.php

2000 лет д.н.э.
0
Fuelen, к чему этот офф? Есть конкретные вопрос, нет конкретного ответа проходи дальше, зачем тему засирать?
3.Ы. Не предлогая своего варианта не критикуй чужой.

Землянин
0
29. ramzes, почему оффтоп? Мой вариант - юзать функцию filter_var() и флаги фильтрации/проверки URL.
А почему его функция бред?
Я так и не понял: это функция фильтрации или валидации? Если валидации, то должна возвращать TRUE/FALSE.
Первый раз вижу, чтобы при ошибке возвращали неизвесную константу error, а не булевое значение FALSE.
if(strlen($url) == 0) лучше заменить на if($url == NULL). Шаблон во второй регулярке страшный.
if ( !strstr ($url,"://")) $url = "http://".$url;
strstr возвращает строку или FALSE. Правильно так
if (strstr ($url,"://") !== FALSE)
Изменил: Артур (18.04.2010 / 20:01)

Землянин
0
Это вообще вынос мозга
$url = preg_replace ("~ˆ[a-z]+~ie", "strtolower ('\\0')", $url);

2000 лет д.н.э.
0
Не так ты понял, не надо другой функции, вопрос 'почему регулярка цепляет хтмл сущности "<> символов'. Я разобраться хочу а не сменить подходsmile
// короче, поправишь шаблон регулярки, большое спасибо, нет так нетsmile

Землянин
0
У тебя в шаблоне там типа такое [...&amp;...]
Между [] набор символов, а не слов
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск