在网上看到的一篇文章关于js和php编码的_PHP教程

WBOY
Freigeben: 2016-07-13 10:36:42
Original
710 Leute haben es durchsucht


解决办法: 采用js对URL中的汉字进行escape编码。 

<a href="" onclick="window.open('product_list.php?p_sort='+escape('PHP开发资源网'));">
Nach dem Login kopieren



这样点击链接后的效时:

引用:http://127.0.0.1/shop/product_list.php?p_sort=PHP%u5F00%u53D1%u8D44%u6E90%u7F51


生成了这样的效果, 很明显用PHP的urldecode()或者base64_decode()是无法反解的。

解决方法, 用PHP写一个反解函数:

function js_unescape($str)
<br />{
<br />        $ret = '';
<br />        $len = strlen($str);
<br />
<br />        for ($i = 0; $i < $len; $i++)
<br />        {
<br />                if ($str[$i] == '%' && $str[$i+1] == 'u')
<br />                {
<br />                        $val = hexdec(substr($str, $i+2, 4));
<br />
<br />                        if ($val < 0x7f) $ret .= chr($val);
<br />                        else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f));
<br />                        else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f));
<br />
<br />                        $i += 5;
<br />                }
<br />                else if ($str[$i] == '%')
<br />                {
<br />                        $ret .= urldecode(substr($str, $i, 3));
<br />                        $i += 2;
<br />                }
<br />                else $ret .= $str[$i];
<br />        }
<br />        return $ret;
<br />}
Nach dem Login kopieren




注意JS编码会自动转换成为UTF-8, 所以必须进行编码转换才能得到正确的结果,否则会中文乱码。

代码如下:

print iconv('utf-8', 'gb2312', js_unescape($_REQUEST['p_sort']));
Nach dem Login kopieren



到此我们就成功地反解了js的escape编码了。
如下:
引用:PHP开发资源网


另外我找到个用PHP实现js的escape编码的函数:

function phpescape($str)
<br />{
<br />         $sublen=strlen($str);
<br />         $retrunString="";
<br />         for ($i=0;$i<$sublen;$i++)
<br />         {
<br />                  if(ord($str[$i])>=127)
<br />                  {
<br />                           $tmpString=bin2hex(iconv("gb2312","ucs-2",substr($str,$i,2)));
<br />                           //$tmpString=substr($tmpString,2,2).substr($tmpString,0,2);window下可能要打开此项
<br />                           $retrunString.="%u".$tmpString;
<br />                           $i++;
<br />                  } else {
<br />                           $retrunString.="%".dechex(ord($str[$i]));
<br />                  }
<br />         }
<br />         return $retrunString;
<br />}
Nach dem Login kopieren



大家是否遇到过这种问题呢?

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/738515.htmlTechArticle解决办法:采用js对URL中的汉字进行escape编码。 ahref=""onclick="window.open('product_list.php?p_sort='+escape('PHP开发资源网'));" 这样点击链接后的效时:...
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!