我有一个表单,其中有一个字段是url地址。在将值插入数据库之前,我想对其进行筛选。我看了三个案例:
- 输入:mywebsite.com
- 输入:www.mywebsite.com
- 输入:http://www.mywebsite.com
我总是希望得到最后一个案子。谢谢,Daniel
试试PHP的原生函数filter_var:
filter_var('http://example.com', FILTER_VALIDATE_URL);
这个例子:
$urls = array(
'mywebsite.com',
'www.mywebsite.com',
'http://www.mywebsite.com'
);
echo filter_var($urls[0], FILTER_VALIDATE_URL) ? '+' : '-';
echo filter_var($urls[1], FILTER_VALIDATE_URL) ? '+' : '-';
echo filter_var($urls[2], FILTER_VALIDATE_URL) ? '+' : '-';
输出:
--+
您不需要正则表达式;简单的字符串匹配即可:
$urls = array(
'mywebsite.com',
'www.mywebsite.com',
'http://www.mywebsite.com'
);
$newurls = array();
foreach ($urls as $url) {
if (substr($url, 0, 11) == 'http://www.') {
$newurls[] = $url;
} elseif (substr($url, 0, 4) == 'www.') {
$newurls[] = 'http://' . $url;
} else {
$newurls[] = 'http://www.' . $url;
}
}
var_dump($newurls);
这将输出:
array(3) {
[0] =>
string(24) "http://www.mywebsite.com"
[1] =>
string(24) "http://www.mywebsite.com"
[2] =>
string(24) "http://www.mywebsite.com"
}
虽然这符合您的要求,但假设URL总是以www甚至http开头可能不是一个好主意。