将一个 lua 十六进制函数转换为可在 PHP 中使用的函数。

我遇到的问题是,我正在尝试在不使用Base64的情况下,从lua环境通过post请求发送图像。我使用以下函数将数据更改为可在post请求中发送的内容。

function string.tohex(str)
    return str:gsub('.', function (c)
         return string.format('%02X', string.byte(c))
    end)
end

我可以在lua中很好地将其转换回来。

function string.fromhex(str)
    return str:gsub('..', function (cc)
        return string.char(tonumber(cc, 16))
    end)
end

作为参考,当我将图像传递给string.tohex时,它返回的内容是pastebin.com/4t3LdZWP

但我无法弄清楚如何在php中复制此函数。

编辑,以下是我尝试在php中将其转换回来的代码:

preg_replace_callback(
    '..',
    function ($matches) {
        return chr(intval($matches[0], 16));
    },
    $data
);
点赞
用户1190388
用户1190388

PHP 中的正则表达式模式与 Lua 有些不同!你需要提供分隔符:

preg_replace_callback(
    '/../',
    function ($matches) {
        return chr(intval($matches[0], 16));
    },
    $data
);

这里,/ 充当分隔符。

2015-08-28 19:18:21