PHP 验证字符串以确保它不包含 http:// 或 https:// 或 www

PHP validate string to ensure it does not contain http:// or https:// or www

我有以下 if 语句来检查字符串是否以 http:// 或 https:// 开头,但我还需要它来检查它是否以 www.

if (preg_match('#^https?://#i', $url) === 1) {
    // Starts with http:// or https:// (case insensitive).
}

因此以下操作将失败:

但以下会通过验证

我如何调整它以检查以上内容?

试试这个:

preg_match('#^((https?://)|www\.?)#i', $url) === 1

这是正则表达式 #^(https?://|www\.)#i,这是一种测试未来 URL 的方法(命令行,如果在浏览器中测试,请将 \n 更改为 <br>)。

<?php
$urls = array('http://www.website.com', 'https://www.website.com', 'http://website.com', 'https://website.com', 'www.website.com', 'website.com');
foreach($urls as $url) {
    if (preg_match('#^(https?://|www\.)#i', $url) === 1){
        echo $url . ' matches' . "\n";
    } else {
        echo $url . ' fails' . "\n";
    }
}

输出:

http://www.website.com matches
https://www.website.com matches
http://website.com matches
https://website.com matches
www.website.com matches
website.com fails