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 или подобное?

Вы можете использовать функцию 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».