输入 url 验证 php

Input url validation php

我对这段代码有疑问:

    $parse = parse_url($url); //$url is POST from input field
    $urls = $parse['host'];

    $domain = array('mydomain.com', 'mydomain.net');

    if (!in_array($urls, $domain)) {

       echo 'invalid URL';
    }

正在检查url,如果不在数组中,如果是则报错继续.... 我看到了所有类似的帖子,但没有人解决我的问题。

P.S 问题是:只给出 Invalid URL(如果 url 正确,如果 URL 错误)

e.x url: mydomain.com/u/123-test 需要有效 url

它不起作用的主要原因是您的 url 不包含 scheme http(s) 部分。使用 http(s)://,当您尝试 parse_url() 它 returns path 值而不是 host

<?php
$url = 'http://yourdomain.com/u/123-test';  //$url is POST from input field
$url = parse_url($url, PHP_URL_HOST);
$domain = array('yourdomain.com', 'yourdomain.net');
if (!in_array($url, $domain)) {
     echo 'invalid URL';
    }else{
     echo 'valid URL';
}
?>  

PHP Parse URL - Domain returned as path when protocol prefix not present

演示: https://3v4l.org/nUCfH