Как MySQL хранит несколько пробелов?

0

У меня есть PHP-скрипт, который отображает форму HTML, которая позволяет пользователю вводить данные в <textarea> и хранить их в MySQL.

Пользователь (я) ввел несколько строк текста в <textarea> которые включали в себя \n, \r и 4 последовательных символа пробела (для отступов списка, который я делал). Например:

first line of text:
second line of text:
    (A) some task
    (B) another task

Когда форма была отправлена, содержимое было правильно сохранено в MySQL, включая скрытые символы \r, \n и четыре пробела перед (A) и (B).

Однако var_dump() -ing данные на PHP показывают это:

first line of text.\r\nsecond line of text:\r\n (A) some task\r\n (B)another task

Четыре введенных пробела (U + 0020) не отображаются между символами \r\n и (A), есть только один пробельный символ. Я даже запускал данные через конвертер с шестнадцатеричным преобразованием, и он показывал только один U+0020 перед каждым (A) и (B) вместо четырех U+0020 s. Но, когда я повторно открываю форму для редактирования данных в <textarea>, контент отображается правильно, только я ввел его первоначально, с 4 пробелами перед (A) и (B).

Мои скрипты ведут себя правильно, и проблем нет. Мне просто интересно: как MySQL и <textarea> могут обнаружить 4 пробела, но var_dump() обнаруживает только одно пространство?

Вот что я пытался обнаружить 4 пространства в PHP, с данными, хранящимися в $Variable PHP $Variable:

  • var_dump($Variable) -ing непосредственно перед и после хранения данных в MySQL, до/после stripslashes() и до/после вывода данных в <textarea> и все var_dump() не обнаруживают обнаружение 4 пробелов.
  • strpos($Variable) обнаруживает 4 пробела.
  • print_r($Variable) не обнаруживает 4 пробела.
  • echo $Variable не обнаруживает скрытых символов, кроме одиночных пробелов (а не 4 последовательных пробела)
Теги:

1 ответ

1
Лучший ответ

Когда вы var_dump переменную, отображается тот же HTML.

Если вы хотите показать пробелы, вы можете добавить white-space:pre-wrap.

Свойство CSS с white-space определяет, как обрабатывается пробел внутри элемента. Чтобы слова сломались внутри себя, вместо этого используйте overflow-wrap, word-break или дефис.

С предварительной упаковкой сохраняются последовательности пробелов. Строки разбиваются на символы новой строки, в <br> и, если необходимо, заполнять линейные поля.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню