2015-04-05 5 views
0

Я использую ниже выражения действительного URL, как это: http://www.linkedin.com/in/johndoeРегулярное выражение для URL с параметрами

(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.linkedin)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+)) 

Но проверка работает только для http://www.linkedin.com

Если я вхожу в полный URL с параметрами, это не работает. Пожалуйста помоги.

+0

Я бы сказал, что не работает для 'HTTP : // www.linkedin.com'. «$» В шаблоне, за которым следует спецификация порта, может быть переведен в «конец конца строки, за которым следует двоеточие и некоторые цифры». Но было бы трудно найти символы после того, как строка закончилась ...: -P Используйте 'parse_url' или' filter_var', как было предложено @Denis ниже. – mhall

ответ

0

Регулярного выражения вы должны не потому, что он проверяет на конец строки после ДВОЙ (см $ после se)). Кроме того, он будет проверять только URL-адреса «linked.in».

Итак, вы должны позволить больше символов. Вот ваш fixed regex.

^(?>(?:https?|ftp):\/\/(?:(?:[a-zA-Z0-9][a-zA-Z0-9_-]*)\.linkedin\.(?:com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se))(?:(?:\/[^\/\r\n]*)*)?)$ 

Это соответствует как:

http://www.linkedin.com/in/johndoe 
http://www.linkedin.com 

sample program:

<?php 
    $re = "/^(?>(?:https?|ftp):\\/\\/(?:(?:[a-zA-Z0-9][a-zA-Z0-9_-]*)\\.linkedin\\.(?:com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se))(?:(?:\\/[^\\/\\r\\n]*)*)?)$/m"; 
    $str = "http://www.linkedin.com/in/johndoe\n\nhttp://www.linkedin.com"; 
    preg_replace_callback($re, function ($matches) { 
     echo "Matched: " . $matches[0] . "\n"; 
     }, $str); 
?> 
0

Там ошибка в вашем выражении, вы четко идентифицировали linkedin.

Используйте это:

if (!filter_var($url, FILTER_VALIDATE_URL) === false) { 
    echo("$url is a valid URL"); 
} else { 
    echo("$url is not a valid URL"); 
} 

Источник: http://www.w3schools.com/php/filter_validate_url.asp

+0

Благодарим вас за помощь. Есть ли способ отредактировать выражение для этого? – Viralk

1

Попробуйте использовать это регулярное выражение:

(?i)(?:https?|ftps?)://[A-Z0-9][A-Z0-9_-]*\.linkedin+\.(?:com|org|net|dk|at|us|tv|info|uk|co\.uk|biz|se)(?::\d+)?(?:/.*)?$