0

我对这段代码有疑问:

    $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,如果不在数组中,如果是则给出错误 continue.... 我看到所有类似的线程,但没有人解决我的问题。

PS问题是:只给出无效的网址(以防网址正确和网址错误)

ex url:mydomain.com/u/123-test需要是有效的url

4

1 回答 1

0

它不起作用的主要原因是您的 url 不包含方案 http(s)部分。使用http(s)://, 当您尝试parse_url()返回路径值而不是主机值时

<?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 -当协议前缀不存在时域返回为路径

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

于 2019-08-24T16:49:03.987 回答