0

PHP で SMPP サーバー トランシーバーを作成しました。SMPP からこの SMS 文字列を取得します。これは、実際には 7 ビットの UTF8 メッセージです。サンプル メッセージは次のとおりです。

  5d30205d30205d3

私はそれを変換する方法を知っています。そのはず:

  \x5d3\x020\x5d3\x020\x5d3

自分で書きたくない。私のためにそれを行う機能がすでにあると思います。この文字列を正しい形式に変換するために、いくつかの非表示の iconv または pack() / unpack() を使用します。

PHPを使用してこれを達成しようとしています。何か案は?

ありがとう。

4

2 に答える 2

1

これはそれを行う必要があります:

$message = "5d30205d30205d3";
echo "\x".implode("\x", str_split($message, 3));
// \x5d3\x020\x5d3\x020\x5d3
于 2013-01-23T14:19:46.820 に答える
0

これが私が最終的に使用したものです:

public static function sms__from_unicode($message)
{
    $org_msg = str_split(strtolower($message), 3);
    for($i = 0;$i < count($org_msg); $i++)
        $org_msg[$i] = "\u0{$org_msg[$i]}";

    $str = implode(null, $org_msg);
    $str = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $str);    
    return $str;
}   

function replace_unicode_escape_sequence($match) {
     return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}

10倍。すべて。

于 2013-01-27T06:46:16.963 に答える