在php中过滤输入文本的值(url地址)
我有一个表单,其中有一个字段是url地址。 我想在将值插入数据库之前对其进行筛选。 我看三个案例:在php中过滤输入文本的值(url地址),php,regex,Php,Regex,我有一个表单,其中有一个字段是url地址。 我想在将值插入数据库之前对其进行筛选。 我看三个案例: 输入:mywebsite.com 输入:www.mywebsite.com 输入: 我想永远拿到最后一箱。 谢谢,Daniel试试PHP的本机函数: 这个例子: $urls = array( 'mywebsite.com', 'www.mywebsite.com', 'http://www.mywebsite.com' );
- 输入:mywebsite.com
- 输入:www.mywebsite.com
- 输入:
$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) ? '+' : '-';
产出:
--+
尝试PHP的本机函数:
这个例子:
$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) ? '+' : '-';
产出:
--+
尝试PHP的本机函数:
这个例子:
$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) ? '+' : '-';
产出:
--+
尝试PHP的本机函数:
这个例子:
$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开头可能不是一个好主意。您不需要正则表达式;简单的字符串匹配可以:
$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开头可能不是一个好主意。您不需要正则表达式;简单的字符串匹配可以:
$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开头可能不是一个好主意。您不需要正则表达式;简单的字符串匹配可以:
$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开头可能不是一个好主意。Hi,谢谢您的回答,但它不起作用,因为我需要始终获取和筛选,如果筛选失败,则可能返回false,如果筛选正常,则返回相同的字符串。嗨,谢谢您的回答,但它不起作用,因为如果过滤器失败,我需要始终获取和筛选\u var似乎返回false,如果过滤器工作正常,则返回相同的字符串。嗨,谢谢你的回答,但它不起作用,因为如果过滤器失败,我需要始终获取和筛选\u var似乎返回false,如果过滤器工作正常,则返回相同的字符串。嗨,谢谢你的回答,但它不起作用,因为我需要始终获取,如果过滤器失败,filter_var似乎会返回false,如果过滤器工作正常,则返回相同的字符串。非常感谢Synchro,它工作起来像个符咒。非常感谢Synchro,它工作起来像个符咒。非常感谢Synchro,它就像一个符咒。非常感谢Synchro,它就像一个符咒。