PHP: есть ли способ увидеть "невидимые" символы, такие как\n
Есть ли способ увидеть невидимые символы, такие как пробельные символы, символы новой строки и другие непечатаемые символы таким же образом, как print_r()?
Причина в том, что в моем массиве есть какой-то символ, который я не вижу и не нарушаю.
Object Object
(
[name] => name
[numbers] => Array
(
[0] => 123
[1] => 456
[2] => 789
)
[action] => nothing
)
Посмотрите странные пробелы между [0] и [1]? При печати [0] также печатается новая строка. Но нет, где я назначаю новую строку [0], поэтому я довольно смущен.
Есть ли встроенная функция в php, которая похожа на show_invisible(Object->numbers[0])
, и будет отображаться 123\n
или аналогичный?
Ответы
Ответ 1
Вы можете использовать функцию addcslashes:
string addcslashes (строка $str, строка $charlist)
который вернет строку с обратными косыми чертами перед символами. Примером может служить:
<?php
echo addcslashes('foo[ ]', 'A..z');
// output: \f\o\o\[ \]
// All upper and lower-case letters will be escaped
// ... but so will the [\]^_`
?>
Ответ 2
Чтобы увидеть все невидимые символы не только \r
, \n
и т.д. Хорошо видеть версию json_encode
ed и все понятно:
$str = "...";
echo json_encode($str);
Ответ 3
Возможно, вы можете перечислить все контрольные символы, но попробуйте это для быстрого исправления?
PHP - печатать строку с управляющими символами
Это простой str_replace("\n",'\n',$string)
вид исправления, но вы могли бы, вероятно, адаптировать решение для обратного вызова функции для массива для преобразования этих символов.
Ответ 4
Вы можете просто запустить свой php script и перенести его прямо на hexdump -C
Ответ 5
Чтобы иметь точную репликацию входной строки без окружающего "
и без сериализации, используйте эту оболочку для json_encode()
:
substr(json_encode((string)$string), 1, -1)
Он выполняет строковое кастинг и удаляет "
стандарта JSON.