Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么会收到通知:未定义偏移量:65以及如何修复它_Php - Fatal编程技术网

Php 为什么会收到通知:未定义偏移量:65以及如何修复它

Php 为什么会收到通知:未定义偏移量:65以及如何修复它,php,Php,我一直得到这个注意:未定义的偏移量:65在第31行,这是这一行if($k[$c])$p=preg\u replace('/\b'.base\u convert($c,10,$a)。'\b/,$k[$c],$p)。我怎样才能解决这个问题 //function to get source html function get_data($url) { $curl_handle=curl_init(); curl_setopt($curl_handle,CURLOPT_URL,$url)

我一直得到这个
注意:未定义的偏移量:65
在第31行,这是这一行
if($k[$c])$p=preg\u replace('/\b'.base\u convert($c,10,$a)。'\b/,$k[$c],$p)。我怎样才能解决这个问题

//function to get source html
function get_data($url) {
    $curl_handle=curl_init();
    curl_setopt($curl_handle,CURLOPT_URL,$url);
    curl_setopt($curl_handle,CURLOPT_TIMEOUT,10);
    curl_setopt($curl_handle,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
    curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,10);
    curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
    $html = curl_exec($curl_handle);
    curl_close($curl_handle);

    return $html;
}

//function to extract string beteen 2 delimeters
function extract_unit($string, $start, $end) {
    $pos = stripos($string, $start);
    $str = substr($string, $pos);
    $str_two = substr($str, strlen($start));
    $second_pos = stripos($str_two, $end);
    $str_three = substr($str_two, 0, $second_pos);
    $unit = trim($str_three);

    return $unit;
}

//function to decode packer endcoding
function js_unpack($p,$a,$c,$k) {
  while ($c--)
    if($k[$c]) $p = preg_replace('/\b'.base_convert($c, 10, $a).'\b/', $k[$c], $p);

  return $p;
}

//url source;
$adcrunch = get_data("http://adcrun.ch/BuVE");

//gather js_packer arguments
$arg_p = extract_unit($adcrunch, 'return p}(\'', ';\',');
$arg_a = extract_unit($adcrunch, '});\',', ',');
$arg_c = extract_unit($adcrunch, ',10,', ',\'|a0x1');
$arg_k = extract_unit($adcrunch, ',\'|', '\'.split');

$p = $arg_p;
$a = $arg_a;
$c = $arg_c;
$k = explode('|', $arg_k);

echo js_unpack($p, $a, $c, $k);
试试这个

if(isset($k[$c]) && $k[$c])

$c
很可能是65,并且
$k[65]
不存在

未定义的偏移量意味着数组$k中没有索引65

您可以通过执行以下任一操作来“避免”警告:

if(isset($k[c]))

if(数组键存在($c,$k))
Shai.

或您使用

if(array_key_exists($c,$k)) ...

没有数组元素
$k[65]
。在调用之前检查数组键是否存在,或者在
$c--
之后执行其他操作来检查数组边界,谢谢,但是我可以问一下这个代码()是否与js_unpack函数匹配吗?因为当我添加
if(array\u key\u exists($c,$k))
时,它会返回一个空白页面。我不熟悉打包程序的PHP版本,但您可以尝试以下方法: