在PHP中实现Javascript的escape()函数代码_PHP教程
程序员文章站
2024-02-12 09:19:16
...
这里,一般都需要预先将正常的字符串编码成 JavaScript unescape() 函数能够解译的格式,以 PHP 为例,可以使用以下函数实现 Javascript 中 escape() 函数相同的功能:
function escapeToHex($string, $encoding = UTF-8) {
$return = ;
for ($x = 0; $x $str = mb_substr($string, $x, 1, $encoding);
if (strlen($str) > 1) { // 多字节字符
$return .= %u . strtoupper(bin2hex(mb_convert_encoding($str, UCS-2, $encoding)));
} else {
$return .= % . strtoupper(bin2hex($str));
}
}
return $return;
}
?>
假设我们要隐藏以下地址:http://www.dirk.sh/assets/uploaded/thisistest.pdf
我们可以利用以下脚本实现:
如果你查看页面源代码,你会看到(因为太长,所以进行了手动分行,实际运行结果应该是完整的一行):
而在浏览器中显示的页面,和普通 html 没有分别。
注:
1、escapeToHex() 函数的第二个参数($encoding)表示你传递进来的字符串的编码,默认是 UTF-8,如果你使用了其他编码,应该在调用函数的明确指定;
2、unescape() 在 ECMAScript v3 规范中被反对使用,该规范建议使用新的替代函数 decodeURIComponent(),但我经过测试发现,decodeURIComponent()函数对多字节字符(中文)处理存在问题,所以仍然使用了 unescape() 函数。
3、原则上来说,上述方法只是为了防止搜索爬虫获取你认为需要保密的资源地址,在支持 Javascript 的浏览器下浏览页面,和没有启用这种保护机制情况下看到的呈现是完全相同的。
复制代码 代码如下:
function escapeToHex($string, $encoding = UTF-8) {
$return = ;
for ($x = 0; $x $str = mb_substr($string, $x, 1, $encoding);
if (strlen($str) > 1) { // 多字节字符
$return .= %u . strtoupper(bin2hex(mb_convert_encoding($str, UCS-2, $encoding)));
} else {
$return .= % . strtoupper(bin2hex($str));
}
}
return $return;
}
?>
假设我们要隐藏以下地址:http://www.dirk.sh/assets/uploaded/thisistest.pdf
我们可以利用以下脚本实现:
复制代码 代码如下:
如果你查看页面源代码,你会看到(因为太长,所以进行了手动分行,实际运行结果应该是完整的一行):
复制代码 代码如下:
而在浏览器中显示的页面,和普通 html 没有分别。
注:
1、escapeToHex() 函数的第二个参数($encoding)表示你传递进来的字符串的编码,默认是 UTF-8,如果你使用了其他编码,应该在调用函数的明确指定;
2、unescape() 在 ECMAScript v3 规范中被反对使用,该规范建议使用新的替代函数 decodeURIComponent(),但我经过测试发现,decodeURIComponent()函数对多字节字符(中文)处理存在问题,所以仍然使用了 unescape() 函数。
3、原则上来说,上述方法只是为了防止搜索爬虫获取你认为需要保密的资源地址,在支持 Javascript 的浏览器下浏览页面,和没有启用这种保护机制情况下看到的呈现是完全相同的。
推荐阅读
-
在PHP中实现Javascript的escape()函数代码_PHP教程
-
set_exception_handler函数在ThinkPHP中的用法,thinkphpc函数_PHP教程
-
PHP下escape解码函数的实现方法_PHP教程
-
php中操作memcached缓存进行增删改查数据的实现代码,phpmemcached_PHP教程
-
php中通过正则表达式下载内容中的远程图片的函数代码_PHP教程
-
PHP中输出转义JavaScript代码的实现代码
-
数组在PHP内核中的实现_PHP教程
-
求PHP实现javascript escape和unescape方法的代码
-
php中将数组转成字符串并保存到数据库中的函数代码_PHP教程
-
在PHP的图形函数中显示汉字_PHP教程