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


filter the value of input text in php ( url address )

我有一个表单,其中有一个字段是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开头可能不是一个好主意。