使用 PHP 使用 SPACE 定界符将十进制转换为 ASCII

Using PHP to Convert Decimal to ASCII using SPACE delimiters

使用PHP,如何将中间有space的十进制数字符串转换为没有space的字符串?(当然除非是DECspace(32)转换)

示例:84 104 97 110 107 32 121 111 117

我已经查看了相关问题,其中大部分只是询问将十进制转换为ascii 的内置函数是什么。我知道 chr() 和 ord() 并且我认为解决方案确实应该使用 explode() 和 implode() 以及字符串替换。我对 for 和 foreach 循环很糟糕,所以逻辑打破了我的想法。 :)

我找到的最接近的 SO 主题是这个,它基本上与我的要求相反 - Using PHP to Convert ASCII Character to Decimal Equivalent

在这种情况下 strtok 函数实际上可以用于某些事情。

strtok 函数根据字符标记字符串。在这种情况下,令牌分隔符是 space。每次你调用 strtok 它 returns 字符串中的下一个标记。

chr 函数用于将序数(十进制)数转换为其等效的 ASCII 字符。

function myParseString($str) {
    $output = ''; // What we will return
    $token = strtok($str, ' '); // Initialize the tokenizer

    // Loop until there are no more tokens left
    while ($token !== false) {
        $output .= chr($token); // Add the token to the output
        $token = strtok(' '); // Advance the tokenizer, getting the next token
    }
    // All the tokens have been consumed, return the result!
    return $output;
}
$str = '84 104 97 110 107 32 121 111 117';
echo myParseString($str);

(不客气。)