字串乱序 PHP&JS




<?php
/**
 * 字串乱序 PHP&JS 
 *
 * php 中把字串乱序后输出给客户机的 JAVASCRIPT , JAVASCRIPT 中恢复
 * 在指定长度提取一个字符,并把这一组字串倒序,
 * 形成这样的几组字串,最后貌似就形成了数字。
 * 
 * 效果一般
 */

$str = "0123456789测试ab“\"'cdefghijklmnop你好多字节字符乱";

$url = 'http://www.baidu.com';
$str = httpget($url);
$str = mb_convert_encoding($str, 'GB18030', 'utf-8');

$r = 64;
$m = mb_strlen($str);
$n = $m / $r;
$jsarr = '';
for($i = 0;$i < $r;$i++){
    $nstr = '';
    for($j = 0;$j < $n;$j++){
        $n2 = $j * $r + $i;
        if($m < $n2) break;
		
        $nstr = mb_substr($str, $n2, 1, 'GB18030') . $nstr;  // 声明 $str 的编码
        # $nstr = @$str[$n2].$nstr;    	                 // 多字节乱码
    }
    $nstr = "\"" . addJsSlashes($nstr) . "\",";
    // addslashes addcslashes
    $jsarr .= $nstr;
    }

	
echo "\r\n\r\n<script> arr = [".$jsarr."];"; 

function addJsSlashes($str){
    $str = addcslashes($str, "\0..\006\010..\012\014..\037\042\047\134\177"); 
    return str_replace(array(chr(7), chr(11)), array('\007', '\013'), $str);
    }
function httpget($url){
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);            // 不响应 header
    curl_setopt($ch, CURLOPT_NOBODY, FALSE);        // 输出 body 区
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
    curl_setopt($ch, CURLOPT_TIMEOUT, 120);
    $response = curl_exec($ch);
    if(curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200'){
        return $response;
        }
    else return NULL;
    curl_close($ch);
    }

?>

function decode(arr) {
    var width = arr[0].length;
    var sfarr = new Array(width);
    for (var c = 0; c < width; c++) {
        sfarr[c] = "";
    }
    for (var c = 0; c < arr.length; c++) {
        if (arr[c] == null) continue;
        var str = new String(arr[c]);
        var dif = width - str.length;
        for (var z = 0; z < str.length; z++) {
            if (str.charAt(z) + "" == "") continue;
            else sfarr[z + dif] += str.charAt(z);
        }
    }
    var w = "";
    for (var c = 0; c < sfarr.length; c++) {
        w = sfarr[c] + w;
    }
    document.write(w);
};
decode(arr);
document.close();
</script>



转载于:https://www.cnblogs.com/yisuo/p/6784092.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值