Есть ли способ увидеть невидимые символы, такие как пробелы, символы новой строки и другие непечатаемые символы таким же образом, как 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
или подобное?
Вы можете использовать функцию 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 [\]^_` ?>
Чтобы увидеть все невидимые символы не только \r
, \n
т. Д. Приятно видеть версию json_encode
ed, и все ясно:
$str = "..."; echo json_encode($str);
Вероятно, вы можете перечислить все контрольные символы, но попробуйте это для быстрого исправления?
PHP – печатать строку с управляющими символами
Это простой str_replace("\n",'\n',$string)
тип исправления, но вы могли бы, вероятно, адаптировать решение для обратного вызова функции для массива для преобразования этих символов.
Вы можете просто запустить свой php-скрипт и перенести его прямо в hexdump -C
Чтобы иметь точную репликацию входной строки без окружающих "
и без сериализации, используйте эту оболочку для json_encode()
:
substr(json_encode((string)$string), 1, -1)
Он выполняет строковое кастинг и удаляет "
стандарт JSON».