Подтвердить что ты не робот

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 или аналогичный?

4b9b3361

Ответ 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.