0

私は RTF コンバーターを使用しており、240asが必要&#U050&#U052&#U048ですが、これを行う方法がわかりません!?!

次の関数を使用してみました。

function string_to_ascii($string) {
    $ascii = NULL;
    for ($i = 0; $i < strlen($string); $i++) {
            $ascii += "&#U"+str_pad(ord($string[$i]),3,"0",STR_PAD_LEFT);
    }
    return($ascii);
}

しかし、それはまだ数字 (例えば2= 50)だけordを出力し、それを狂わせるだけです。

私は試してみましたecho "-&#U"+ord("2")+"-";! 50416?!?

エンコーディングと関係があるかもしれないと感じています

4

2 に答える 2

1

私はあなたがこれを考え過ぎていると思います。文字列を で配列に変換し、そのすべてstr_splitマップ ordしてから、それぞれをフォーマットする場合はsprintf(または必要str_padに応じて)、次のように使用します。

function string_to_ascii($string) {
    $array = array_map( 'ord', str_split( $string));
    // Optional formatting:
    foreach( $array as $k => &$v) {
        $v = sprintf( "%03d", $v);
    }
    return "&#U" . implode( "&#U", $array);
}

を渡すstring_to_ascii( '240')と、 が返されstring(18) "&#U050&#U052&#U048"ます。

于 2013-01-22T14:30:50.330 に答える
0

ちょうどこれを見つけました:

function to_ascii($string) {
    $ascii_string = '';
    foreach (str_split($string) as $char) {
        $ascii_string .= '&#' . ord($char) . ';';
    }
    return $ascii_string;
}

ここ

于 2013-01-22T14:29:04.643 に答える