Обнаружение скопированных вкладок в текстовой области для ввода в базу данных - PullRequest
0 голосов
/ 20 июня 2011

У меня есть текстовая область, которая позволяет пользователям записывать свои собственные данные, которые сохраняются в базе данных.

Большинство пользователей копируют свой текст из Word или аналогичной программы, которая также копирует свои вкладки в текстовую область.

Когда вкладки сохраняются в базе данных, они автоматически преобразуются в простоодин пробел.

Я хочу сохранить вкладки либо в виде правильных вкладок в базе данных, либо в виде заданного количества пробелов, однако в первую очередь не могу поймать вкладки.

Этото, что я пробовал до сих пор (после получения ввода от пользователя и перед сохранением в базе данных)

str_replace("\t", "    ", $string);
str_replace(chr(9), "     ", $string);

Однако я могу сказать, что вкладки даже не перехватываются, потому что я пытаюсь это сделать:

if (strpos($string, "\t") !== false)
{
    exit("The tab was found");
}  

Никогда не вызывается 'exit'.

Я много раз искал ответ на этот вопрос, однако мне не удалось найти какие-либо исправления.

Я был бы очень признателен за помощь в этом.

1 Ответ

1 голос
/ 21 июня 2011

Комментарий Натана Белла «Проводится ли какая-либо предварительная обработка значений формы, прежде чем вы увидите значение?».Это заставило меня задуматься.

Я использую codeigniter в качестве своего php-фреймворка.Проведя некоторые исследования и просмотрев исходный код, я обнаружил, что встроенный класс безопасности форматировал все мои вкладки в один пробел, например ...

if (strpos($str, "\t") !== FALSE)
{
    $str = str_replace("\t", ' ', $str);
}

Поэтому все, что я делал, это менял источниккод к этому:

if (strpos($str, "\t") !== FALSE)
{
    $str = str_replace("\t", '      ', $str);
}

И это работает сейчас.Так что спасибо Натану и всем, кто помогал за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...