Nginx \x22 PHP和Ruby轉(zhuǎn)換為原字符

在Nginx日志中發(fā)現(xiàn),nginx將特殊字符轉(zhuǎn)化為16進(jìn)制,看起來很不方便,使用PHP和Ruby轉(zhuǎn)換為原字符,方法如下:

PHP

    public function x22()
    {
        $request_body = '{\x22no\x22:\x222020042309311\x22,\x22php\x22:\x22\x5Cu53d1\x5Cu53d1\x5Cu53d1\x22}';

        $new_request_body = '';

        $pt = 0;

        while ($pt < strlen($request_body)) {
            if ($request_body[$pt] == '\\' && $request_body[$pt + 1] == 'x') {

                //\x22為16進(jìn)制,轉(zhuǎn)換為10進(jìn)制,再轉(zhuǎn)化為ASCII碼
                $new_request_body .= chr(hexdec($request_body[$pt] . $request_body[$pt + 1] . $request_body[$pt + 2] . $request_body[$pt + 3]));

                $pt = $pt + 4;

            } else {

                $new_request_body .= $request_body[$pt];

                $pt = $pt + 1;
            }
        }

        print_r($new_request_body);
    }
php.png

Ruby

#!/usr/bin/ruby -w
request_body = "{\x22no\x22:\x222020042309311\x22,\x22php\x22:\x22\x5Cu53d1\x5Cu53d1\x5Cu53d1\x22}"

new_request_body = ''
pt = 0
while pt < request_body.length do
    # 如果是中文, 轉(zhuǎn)碼
    if request_body[pt] == '\\' and request_body[pt + 1] == 'x' then
        word = (request_body[pt + 2] + request_body[pt + 3]).to_i(16).chr
        new_request_body = new_request_body + word
        pt = pt + 4
    # 如果是英文, 不處理
    else
        new_request_body = new_request_body + request_body[pt]
        pt = pt + 1
    end
end
puts '翻譯結(jié)果:'
puts new_request_body
ruby.png

JavaScript

var request_body = '{\x22no\x22:\x222020042309311\x22,\x22php\x22:\x22\x5Cu53d1\x5Cu53d1\x5Cu53d1\x22}';

var new_request_body = '';

var pt = 0;

while(pt < request_body.length){

    if (request_body[pt] == '\\' && request_body[pt + 1] == 'x') {

        //\x22為16進(jìn)制,轉(zhuǎn)換為10進(jìn)制,再轉(zhuǎn)化為ASCII碼
        new_request_body += parseInt(request_body[pt] + request_body[pt + 1] + request_body[pt + 2] + request_body[pt + 3],16).fromCharCode();

        pt = pt + 4;

    } else {

        new_request_body += request_body[pt];

        pt = pt + 1;
    }
}

console.log(new_request_body);

寫作不易,如果您覺得對您有幫助,請您給我點(diǎn)個(gè)贊或者關(guān)注我 [送你小花花~]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Nginx 的配置文件使用的就是一門微型的編程語言,許多真實(shí)世界里的 Nginx 配置文件其實(shí)就是一個(gè)一個(gè)的小程序...
    SkTj閱讀 4,428評論 0 7
  • 大多數(shù) Nginx 新手都會(huì)頻繁遇到這樣一個(gè)困惑,那就是當(dāng)同一個(gè)location配置塊使用了多個(gè) Nginx 模塊...
    SkTj閱讀 8,248評論 0 12
  • 更改ip和dnsVi /etc/sysconfig/network-scripts/ifcfg-eth0vi /...
    Xwei_閱讀 2,044評論 0 3
  • 春天的景色很美麗。 田野里,山坡上,花園里都長滿了綠色的小草?;ㄖι隙奸_滿了鮮艷的花朵。 小河里,冬天的積冰都融化...
    杰浩寶貝閱讀 72評論 0 1
  • 單位:江蘇江安集團(tuán)有限公司 無錫419期利他一組 【日精進(jìn)打卡第71天】 1、《六項(xiàng)精進(jìn)》大綱今天讀了0遍,共計(jì)讀...
    仇增華閱讀 181評論 0 0

友情鏈接更多精彩內(nèi)容