Использование PHP для преобразования десятичного числа в ASCII с использованием разделителей пробела

Используя PHP, как преобразовать строку десятичных чисел с пробелами между ними в строку без пробелов? (если, конечно, это не преобразованное пространство DEC (32))

Пример: 84 104 97 110 107 32 121 111 117

Я проверил соответствующие вопросы, и большинство из них просто спрашивают, что такое встроенная функция для преобразования десятичной дроби в ascii. Я знаю chr() и ord(), и я думаю, что решение действительно должно использовать explode() и implode() вместе со строкой replace. Я просто ужасен в циклах for и foreach, поэтому логика ломает мне голову.:)

Самая близкая тема SO, которую я нашел, это та, которая в основном противоположна тому, что я прошу - Использование PHP для преобразования ASCII-символа в десятичный эквивалент

1 ответ

Решение

Это будет ситуация, когда strtok Функция на самом деле может быть использована для чего-то.

strtok Функция маркирует строку на основе символа. В этом случае разделитель токена является пробелом. Каждый раз, когда вы звоните strtok он возвращает следующий токен в строке.

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);

(И пожалуйста.)

Другие вопросы по тегам