Самый эффективный способ проверить URL - PullRequest
0 голосов
/ 03 ноября 2011

Я пытаюсь проверить, действителен ли отправленный пользователем URL-адрес, он попадает непосредственно в базу данных, когда пользователь нажимает кнопку Отправить. Пока что у меня есть:

$string = $_POST[url];
if (strpos($string, 'www.') && (strpos($string, '/')))
{
    echo 'Good';
}

Отправляемая страница должна быть страницей в каталоге, а не основным сайтом, поэтому http://www.address.com/page Как я могу проверить второй /, не думая, что он из http:// и не включает .com?

Пример ввода:

 Valid:
     http://www.facebook.com/pageName
     http://www.facebook.com/pageName/page.html
     http://www.facebook.com/pageName/page.*

Invalid:
     http://www.facebook.com
     facebook.com/pageName
     facebook.com

Ответы [ 7 ]

1 голос
/ 03 ноября 2011
if(!parse_url('http://www.address.com/page', PHP_URL_PATH)) {
    echo 'no path found';
}

См. parse_url ссылка.

1 голос
/ 03 ноября 2011
filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED)

Больше информации здесь:

http://ca.php.net/filter_var

1 голос
/ 03 ноября 2011

См. Функцию parse_url().Это даст вам часть «/ page» URL в отдельной строке, которую вы затем сможете проанализировать по своему усмотрению.

0 голосов
/ 03 ноября 2011

Попробуйте использовать регулярное выражение, чтобы убедиться, что URL имеет правильную структуру.Вот больше чтения по этому .Вам нужно узнать, как работает PCRE .

Простой пример того, что вы хотите (отказ от ответственности: не проверено, не полностью).

function isValidUrl($url) {
    return preg_match('#http://[^/]+/.+#', $url));
}
0 голосов
/ 03 ноября 2011

Чтобы проверить формат URL, вы можете использовать регулярное выражение:

preg_match [http://php.net/manual/en/function.preg-match.php] - хорошее начало, но для его работы необходимо знание регулярных выражений.

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

function check_404($url) {
    $return = @get_headers($url);

    if (strpos($return[0], ' 404 ') === false)
        return true;
    else {
        return false;
    }
}
0 голосов
/ 03 ноября 2011

Отсюда: http://www.blog.highub.com/regular-expression/php-regex-regular-expression/php-regex-validating-a-url/

    <?php
/**
* Validate URL
* Allows for port, path and query string validations
* @param    string      $url       string containing url user input
* @return   boolean     Returns TRUE/FALSE
*/
function validateURL($url)
{
$pattern = '/^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&amp;?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/';
return preg_match($pattern, $url);
}

$result = validateURL('http://www.google.com');
print $result;
?>
0 голосов
/ 03 ноября 2011

Может быть, strrpos вам поможет. Он найдет последнее вхождение строки в строке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...