关于多种功能类似的函数、变量的辨析

来源:互联网 发布:广东工程中标数据网 编辑:程序博客网 时间:2024/05/16 05:27

 

urlencode()和rawurlencode()的区别
 
 urlencode:返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 RFC1738 编码不同。
 
rawurlencode:功能和urlencode基本一样,采用的是RFC1738编码,因此空格会编码为%20。
 
  代码:
 
  echo 'sales and marketing/Miami';
  echo "<br>";
  echo rawurlencode('sales and marketing/Miami');
  echo "<br>";
  echo urlencode('sales and marketing/Miami');
显示:
sales and marketing/Miami
sales%20and%20marketing%2FMiami
sales+and+marketing%2FMiami
 
 
 
 $_SERVER['SCRIPT_NAME'] 跟 $_SERVER['PHP_SELF'']
 
通常在本机测试 $_SERVER['SCRIPT_NAME'] 跟 $_SERVER['PHP_SELF'] 大概看不出有什麼不同,因为大多的PHP不因此CGI模式运行的。PHP以 CGI 体式格局运行,二者就有明显不同的差异。 
echo $_SERVER['SCRIPT_NAME']; // (/cgi-system/php.cgi) 
echo $_SERVER['PHP_SELF']; // (/admin/test.php) 
但是在做一些URL拼合的历程中可能引发XSS跨站攻击。 
$PHP_SELF = htmlspecialchars($_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME']); 
 
 
htmlentities和htmlspecialchars函数的区别
        这两个函数在格式化带有英文字符的html代码的时候基本没啥问题,但是htmlentities对中文字符也不放过,这样得出来的结果是中文字符部分变为一堆乱码
        htmlentities跟htmlspecialchars的功能类似,但是htmlentities是对所有HTML定义的entity都不放过,包括各种特殊字符和中文,这样得出来的结果是中文字符部分变为一堆乱码。

 

原创粉丝点击