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).
}
因此以下操作将失败:
- http://www.website.com
- https://www.website.com
- http://website.com
- https://website.com
- www.website.com
但以下会通过验证
- website.com
我如何调整它以检查以上内容?
试试这个:
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
我有以下 if 语句来检查字符串是否以 http:// 或 https:// 开头,但我还需要它来检查它是否以 www.
if (preg_match('#^https?://#i', $url) === 1) {
// Starts with http:// or https:// (case insensitive).
}
因此以下操作将失败:
- http://www.website.com
- https://www.website.com
- http://website.com
- https://website.com
- www.website.com
但以下会通过验证
- website.com
我如何调整它以检查以上内容?
试试这个:
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