You are here

24 使用check_url和valid_url

admin 的头像
Submitted by admin on 星期五, 2015-09-18 09:37

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

有时候我们需要处理用户提交的URL。我们首先需要检查用户提供的值是个有效的URL。此时我们可以使用函数check_url(),这个函数首先过滤掉恶意的协议,接着使用check_plain()来处理URL,代码如下

 

function check_url($uri) {

  return check_plain(drupal_strip_dangerous_protocols($uri));

}

此时由于我们使用了check_plain,所以返回的值不能用作drupal_attributes()里面的属性值。如果我们需要传递给drupal_attributes,那么可以直接调用drupal_strip_dangerous_protocols

如果我们只是想验证一下URL的有效性,此时可以使用valid_url()。它是按照RFC 3986标准来验证URL的。如果URL通过了测试,那么它返回TRUE,否则返回FALSE。需要注意的是,通过语法检查的URL也不一定安全。

如果你想输出一个URL时,可以使用函数url(),它在处理url时调用了drupal_encode_path(),从而实现对Drupal路径的编码。drupal_encode_path()PHPrawurlencode()函数做了封装。为了好看,没有对斜杠进行转义。

function drupal_encode_path($path) {

  return str_replace('%2F', '/', rawurlencode($path));

}

Drupal就是这样,很多时候不使用PHP自身的API函数,而是根据自己的需要,在上面做一些封装处理。这种情况很多,除了上面的drupal_encode_path,常见的还有drupal_substr,对substr做了封装,drupal_strlenstrlen做了封装。


Drupal版本: