前言
在用PHP写爬虫的时候,难免会遇到一些Js加密运算,遇到就罢了;关键在于PHP和Js的位移运算结果是不一样,本质上的差别是因为两种语言对数字的处理方式不同;但是很幸运,各位前辈已经造好轮子,在此谢过知了大神~
Code:
<?php
/**
 * >>> javascript operator in php x86_64
 *
 * @param int $v
 * @param int $n
 *
 * @return int
 */
function rrr(int $v, int $n): int
{
    return ($v & 0xFFFFFFFF) >> ($n & 0x1F);
}
/**
 * >> javascript operator in php x86_64
 *
 * @param int $v
 * @param int $n
 *
 * @return int
 */
function rr(int $v, int $n): int
{
    $v = $v & 0x80000000 ? $v | 0xFFFFFFFF00000000 : $v & 0xFFFFFFFF;
    return $v >> ($n & 0x1F);
}
/**
 * << javascript operator in php x86_64
 *
 * @param int $v
 * @param int $n
 *
 * @return int
 */
function ll(int $v, int $n): int
{
    $t = ($v & 0xFFFFFFFF) << ($n & 0x1F);
    return $t & 0x80000000 ? $t | 0xFFFFFFFF00000000 : $t & 0xFFFFFFFF;
}
/**
 * javascript逗号运算符(,)
 *
 * @param ...
 *
 * @return mixed
 */
function comma()
{
    $args = func_get_args();
    return end($args);
}
原文
作者:Neo Peng  
地址:https://zhile.io/2018/06/21/php-equivalent-javascript-bitwise-operators.html