欧阳简之 > PHP FILTER_VALIDATE_URL 小坑记录

热爱代码,对每一行代码保持一颗敬畏之心。

PHP FILTER_VALIDATE_URL过滤器经常会在校验URL时使用,但如果您没注意,可能就存在个小坑。

直接贴代码,一目了然。当子域名含下划线的时候,这个校验就不行了,所以如果存在子域名校验场景,FILTER_VALIDATE_URL可能不太适用。

<?php 
    $url1 = "https://www.example.com";
    $url2 = "https://my_home.example.com";
    $url3 = "https://www.example.com/index.html";
    $url4 = "https://www.example.com/my_home.html";

    if (!filter_var($url1, FILTER_VALIDATE_URL)) {
        echo "URL1 is not valid" . PHP_EOL;
    } else {
        echo "URL1 is valid" . PHP_EOL;
    }

    if (!filter_var($url2, FILTER_VALIDATE_URL)) {
        echo "URL2 is not valid" . PHP_EOL;
    } else {
        echo "URL2 is valid" . PHP_EOL;
    }

    if (!filter_var($url3, FILTER_VALIDATE_URL)) {
        echo "URL3 is not valid" . PHP_EOL;
    } else {
        echo "URL3 is valid" . PHP_EOL;
    }

    if (!filter_var($url4, FILTER_VALIDATE_URL)) {
        echo "URL4 is not valid";
    } else {
        echo "URL4 is valid";
    }
tagged by none