Запретить пользователю взрывать строку в PHP - PullRequest
0 голосов
/ 07 декабря 2010

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

Каков наилучший способ сделать это?Есть ли какой-то тип фильтра, который я должен запускать поверх пользовательских данных, удаляя вхождения разделителя?Я думаю, что будет лучший ответ, чем просто создание уникального разделителя.

Спасибо.

Ответы [ 2 ]

5 голосов
/ 07 декабря 2010

Это древняя проблема, поэтому решите ее так, как она уже решена.

В CSV-файлах запятая является разделителем, однако записи могут содержать запятые.Как?Окружите записи кавычками.Что если запись содержит кавычки?Удвойте кавычки на вводе пользователем, чтобы вы знали, что это данные, а не разделители.

Field One,Field Two,"Field, Three","Field ""Four"""

PHP имеет функции для создания и чтения формата CSV с определенными пользователем разделителями, поэтому вам даже не нужно писать код.

0 голосов
/ 07 декабря 2010

Если в вашей среде нет str-getcsv, то в соответствии с комментариями в исходном вопросе.

Предположим, что ваш разделитель является символом трубы

$clientString = 'somestring|fobar';
$clientString = str_replace('|', '{{{somecrazydelimiter}}}', $clientString);

Позже вы можете изменить ситуацию после взрыва и заменить ваш временный разделитель на оригинальный:

$clientString = str_replace('{{{somecrazydelimiter}}}', '|', $clientString);
...