php - Javascript 到 PHP domain.charCodeAt(i)

标签 php javascript

我正在尝试将 javascript 片段转换为 PHP。 Javascript 是

var sum1 = 0, sum2 = 0;
for (var i = domain.length - 1; i >= 0; i--) {
    sum1 += domain.charCodeAt(i) * 13748600747;
    sum2 += domain.charCodeAt(i) * 40216416130;
}

var x = ("$" + sum1).substring(0, 8) + ("" + sum2).substring(0, 8);

但是没看懂这部分,sum1 += domain.charCodeAt(i) * 13748600747; 我的意思是可以用哪个PHP函数代替domain.charCodeAt(i)。

编辑:

我的 PHP 代码:

$domain = "example.com";
$sum1 = 0;
$sum2 = 0;
$length = strlen($domain);
$i = $length - 1;
for ( $i; $i >= 0; $i-- ) {
    $sum1 += ord($domain[$i]) * 13748600747;
    $sum2 += ord($domain[$i]) * 40216416130;
}
$newsum = "$".$sum1;
$x = substr($newsum,0,8) + substr($sum2,0,8);

echo $x;

输出肯定是不同的。需要帮助。

最佳答案

这应该是一个 Unicode 安全版本。

$domain = "example.com";
$sum1 = 0;
$sum2 = 0;

// this will convert $domain to a UTF-16 string,
// without specifying the third parameter, PHP will
// assume the string uses PHP's internal encoding,
// you might want to explicitly set the `from_encoding`
$domain = mb_convert_encoding($domain, 'UTF-16');

$length = mb_strlen($domain, 'UTF-16');
$i = $length - 1;

for ( $i; $i >= 0; $i-- ) {
    $char = mb_substr($domain, $i, 1, 'UTF-16');
    $sum1 += hexdec(bin2hex($char)) * 13748600747;
    $sum2 += hexdec(bin2hex($char)) * 40216416130;
}
$newsum = "$" . strval($sum1);
$sum2 = strval($sum2);
$x = substr($newsum,0,8) . substr($sum2,0,8);

echo $x;

转换为十进制是基于this comment中的代码在 ord documentation 上.

关于php - Javascript 到 PHP domain.charCodeAt(i),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15457412/

相关文章:

php - 在 google App Engine 中为移动应用程序托管带有 MySQL 的 PHP API。如何?是好是坏?

php - 可以在 HTTP 请求中执行长操作吗?

php - 如何使用 CSS 设置统一划分,其中列和行划分相等

javascript - Flux/Alt 数据依赖,如何优雅地道地处理

javascript - 将 "tagName"属性与 "img"进行比较对于 <img> 元素不起作用

javascript - 如何清除地址栏中的文字?

php - Html 不向 php 发送发布数据

javascript - TypeScript 是否为 NodeJS 模块访问提供了明确的公共(public) API?

javascript - 如何将多个项目传递给 Handlebars 中的一个函数?

使用慢日志查询的 PHP Mysql 优化