Php проверить наличие url

How to Validate URL with PHP

Any time a user submits a URL, it is crucial to investigate whether the given URL is valid or not. In this short tutorial, you will find the easiest and most efficient way to validate a URL with the help of PHP. Check out the options below.

The First Option is Using filter_var

The first efficient way of validating a URL is applying the filter_var function with the FILTER_VALIDATE_URL filter. So, the following code should be used for checking whether the ($url) variable is considered a valid URL:

 $url = "http://www.w3docs.com"; if (!filter_var($url, FILTER_VALIDATE_URL) === false) < echo "$url is a valid URL"; > else < echo "$url is not a valid URL"; > ?>

The Second Option is Using preg_match

For checking whether the syntax of a URL address is valid, you are also recommended to use the preg_match regular expression. Also, in the URL, dashes are allowed by regular expressions.

In case there exists an invalid syntax, an error message turns out, as demonstrated in the example below:

 $website = 'https://www.w3docs'; $pattern = '/^(https?:\/\/)?([\da-z.-]+)\.([a-z.])([\/\w.-]*)*\/?$/'; if (!preg_match($pattern, $website)) < echo "Invalid URL"; > else < echo "URL is valid: " . $website; > ?>

Describing the filter_var Function

This function is commonly used in PHP for filtering a variable with a given filter. It includes three parameters such as variable, filter, and options.

Describing the preg_match() Regex

The preg_match() regular expression is aimed at searching the string for a pattern. True will be returned when the pattern is there, and, otherwise, false.

Источник

Проверьте, имеет ли URL определенную строку с PHP

Я хотел бы знать, есть ли какое-то слово в URL-адресе.

Например, если текстовый автомобиль находится в URL-адресе, например, www.domain.com/car/или www.domain.com/car/audi/, это будет означать, что «автомобиль существует», и если он ничего не повторит, нет автомобилей «.

ОТВЕТЫ

Ответ 1

Попробуйте что-нибудь подобное. Первая строка строит ваш URL-адрес, а остальные проверяют, содержит ли оно слово «автомобиль».

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; if (strpos($url,'car') !== false) < echo 'Car exists.'; >else

Ответ 2

Я думаю, что самый простой способ:

if (strpos($_SERVER['REQUEST_URI'], "car") !== false) < // car found >

Ответ 3

$url = " www.domain.com/car/audi/"; if (strpos($url, "car")!==false) < echo "Car here"; >else

Ответ 4

if( strpos( $url, $word ) !== false ) < // Do something >

Ответ 5

if(strpos($_SERVER['REQUEST_URI'], 'shop.php') !== false)

Ответ 6

strstr тогда не существовало?

if(strstr($_SERVER['REQUEST_URI'], "car"))

Это должен быть один из самых простых методов?

Ответ 7

if(false !== strpos($url,'car')) < echo 'Car exists!'; >else

Ответ 8

Вы можете попробовать метод .htaccess, похожий на концепцию работы WordPress.

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

Ответ 9

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; if (!strpos($url,'car')) < echo 'Car exists.'; >else

Ответ 10

Конечно, это правильный путь.

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; if (!strpos($url,'mysql')) < echo 'No mysql.'; //swapped with other echo statement >else

В противном случае его отчет будет обратным образом.

Ответ 11

Параметры URL и полученные от глобальной переменной $_GET , которая на самом деле является массивом. Итак, чтобы узнать, содержит ли URL-адрес параметр, вы можете использовать функцию isset() .

if (isset($_GET['yourparametername'])) < //The parameter you need is present >

Впоследствии вы можете создать отдельный массив такого параметра, который необходимо прикрепить к URL-адресу.

if(isset($_GET['param1'])) < \\The parameter you need is present $attachList['param1'] = $_GET['param1']; >if(isset($_GET['param2']))

Теперь, чтобы узнать, нужен ли вам символ ? , просто посчитайте этот массив

Чтобы узнать, установлен ли какой-либо параметр, просто оцените $_GET

Ответ 12

if ( stristr( SITE_HOST, 'your site' ) ) < $protocol = ( !empty( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' ) ? 'https://' : 'http://'; $request = ( !empty( $_SERVER['HTTP_X_ORIGINAL_REQUEST'] ) ) ? $_SERVER['HTTP_X_ORIGINAL_REQUEST'] : $_SERVER['REQUEST_URI']; echo $protocol .'your site'. $request; >

Ответ 13

Вы можете использовать эту функцию в качестве этого кода, сэр

 if((strpos($_SERVER['REQUEST_URI'],'car') !== false)) echo'

Car Exist

'; else echo'

Not

';

Ответ 14

если вы хотите проверить весь URL-адрес (включая имя домена и любой фрагмент внутри URL-адреса), вам потребуется HTTP_HOST

if (strpos($_SERVER['HTTP_HOST'], "windowsmaximizer.com/de/") !== false) < echo 'i contain windowsmaximizer.com/de/'; >

вывод: у меня есть windowsmaximizer.com/de/

Ответ 15

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; if ( strpbrk($url, 'test') ) < // Do something. >else < // Do another thing >

Источник

Проверка валидности url. PHP

Но эта штука все время выдает «no». Мне кажется это из за кириллицы. Ее убирать нельзя. сайт.рф ведь. Помогите пожалуйста, как исправить. Я работаю в кодировке UTF-8 Вот нарыл по-лучше, но не могу кириллицу добавить.. Помогите плиз

function is_url($in)< $w = "a-z0-9"; $url_pattern = "#( (?:f|ht)tps?://(?:www.)? (?:[$w\\-.]+/?\\.[a-z])/? (?:[$w\\-./\\#]+)? (?:\\?[$w\\-&=;\\#]+)? )#xi"; $a = preg_match($url_pattern,$in); return $a; > 

6 ответов 6

В плане проверки русскоязычных доменов могу рекомендовать смотреть в сторону конвертации в IDN, т.е. к виду xn--af1bc.net тогда проблем с русским точно не будет. В стандартном наборе таких функций нет, только декодирование. Если есть возможность поставить соответствующий модуль PECL, то на мой взгляд это идеальное решение.

Если вам надо проверить, существует ли указанный адрес или нет, то есть способ гораздо проще:

$url = 'http://hashcode.ru'; if(get_headers($url, 1))

Потому, как http://www.chopopalo.com — проверку регуляркой пройдет, но вот сайта такого, просто не существует.

только перед таким смелым запросом я бы добавил if(checkdnsrr($domain,’A’) && get_headers($url, 1)) что бы не получить ошибку. Автор, думаю это действительно самый подходящий вариант

На самом деле это не нужно. Это много пользовательский сайт, и пользователи сами должны беспокоится о существовании сайта по указываемой ссылке

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

$a у Вас не соответствует выражению, в то время как «http://www.site.ru» — вполне подойдет. А вот «http://subdomen.site.ru» — уже не влезет. Если урл еще ведет на внутреннюю страницу — тоже не подходит. А зачастую главными являются страницы вида «http://site.ru/en/index.html». И т.д. И т.п.

С русским языком проблем быть не должно, а если всё-таки возникают — значит у Вас старое ПО, пропишите в регулярку весь алфавит.

Требование самое сложное)) URL с GET параметрами и hash’ами. Я обновил шапку и ф-ия, которую добавил удовлетворяет всем моим требованиям, но я не могу добавить кириллицу. Прошу помощи 🙂

Источник

проверьте, является ли строка URL-адресом

Я видел много вопросов, но не мог понять, как это работает, поскольку я хочу более простой случай.

Если у нас есть текст, что бы это ни было, я бы хотел проверить, является ли он URL-адресом или нет.

$text = "something.com"; //this is a url if (!IsUrl($text))< echo "No it is not url"; exit; // die well >else < echo "Yes it is url"; // my else codes goes >function IsUrl($url)< // . > 

Есть ли другой способ, а не проверка с помощью JavaScript в случае блокировки JS?

)"; // Host or IP $regex .= "(\:1)?"; // Port $regex .= "(\/([a-z0-9+\$_-]\.?)+)*\/?"; // Path $regex .= "(\?[a-z+&\$_.-][a-z0-9;:@&%=+\/\$_.-]*)?"; // GET Query $regex .= "(#[a-z_.-][a-z0-9+\$_.-]*)?"; // Anchor if(preg_match("/^$regex$/i", $url)) // `i` flag for case-insensitive < return true; >?> 

но ваш примерный URL-адрес упрощен, (\w+)\.(\w+) соответствует ему. кто-то еще упомянул filter_var который является просто filter_var($url, FILTER_VALIDATE_URL) но , похоже, он не похож на символы, отличные от ascii, поэтому будьте осторожны …

Функция filter_var PHP – это то, что вам нужно. Найдите FILTER_VALIDATE_URL . Вы также можете установить flags для точной настройки вашей реализации.
Нет необходимости в регулярном выражении ….

Следующий код работал для меня:

if(filter_var($text, FILTER_VALIDATE_URL)) < echo "Yes it is url"; exit; // die well >else < echo "No it is not url"; // my else codes goes > 

Вы также можете указать соответствие RFC и другие требования к URL-адресу с использованием флагов. См. PHP Validate Filters для получения более подробной информации.

Проверьте, является ли он действительным URL (example.com НЕ является допустимым URL)

 if(!isValidURL($fldbanner_url)) < $errMsg .= "* Please enter valid URL including http://
"; >

Regexes – плохой способ проверить что-то сложное, как URL.

Функция filter_var () PHP предлагает гораздо более надежный способ проверки URL-адресов. Кроме того, это быстрее, так как это собственный код.

Я не думаю, что на это есть окончательный ответ. Пример действительного URL:

localhost http://xxx.xxx.xxx/alkjnsdf abs.com 

Если у вас есть текст. и не большая его часть. Вы можете проверить, выполнив запрос CURL и посмотрите, возвращает ли он действительный ответ. В противном случае, если я ставлю localhost, это может быть ссылка, и это может быть что-то еще, и вы не сможете проверить это.

function isValidUrl($url) < return preg_match("(?i)\b((?:[az][\w-]+:(?:/|[a-z0-9%])|www\d[.]|[a-z0-9.\-]+[.][az]/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]<>;:'\".,<>?«»“”'']))", $url) > 0; > 

( Источник регулярных выражений )

Вы можете использовать следующий шаблон регулярного выражения, чтобы проверить, является ли ваша переменная URL-адресом или нет:

Что-то вроде может сработать для вас:

$arr = array('abc.com/foo', 'localhost', 'abc+def', 'how r u', 'https://how r u', 'ftp://abc.com', 'a.b'); foreach ($arr as $u) < $url = $u; if (!preg_match('#^(?:https?|ftp)://#', $url, $m)) $url = 'http://' . $url; echo "$u =>"; var_dump(filter_var($url, FILTER_VALIDATE_URL)); > 
abc.com/foo => string(18) "http://abc.com/foo" localhost => string(16) "http://localhost" abc+def => string(14) "http://abc+def" how ru => bool(false) https://how ru => bool(false) ftp://abc.com => string(13) "ftp://abc.com" ab => string(10) "http://ab" 

Таким образом, в основном везде, где вы видите false как возвращаемое значение, которое является URL-адресом INVALID для вас.

Источник

Читайте также:  Boolean new boolean java
Оцените статью