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 回答