过滤php中的输入文本的值(url地址)

时间:2014-10-15 14:55:27

标签: php regex

我有一个表单,其中有一个字段是url地址。 我想在将数据插入数据库之前过滤该值。 我看三个案例:

我想永远得到最后一个案子。 谢谢,丹尼尔

2 个答案:

答案 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开头,可能不是一个好主意。