我有一个表单,其中有一个字段是url地址。 我想在将数据插入数据库之前过滤该值。 我看三个案例:
我想永远得到最后一个案子。 谢谢,丹尼尔
答案 0 :(得分:2)
尝试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) ? '+' : '-';
输出:
--+
答案 1 :(得分:1)
你不需要正则表达式;简单的字符串匹配将:
$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"
}
虽然这符合您的要求,但假设网址始终以www,甚至http开头,可能不是一个好主意。