php stripslashes оставляет один слэш
Как субъект говорит, у меня есть некоторые $_POST
данные, которые мне нужны для удаления всех слэшей. Тем не менее, он оставляет один, и когда в форме есть ошибки, он печатает данные поста обратно пользователю, поэтому им не нужно повторно вводить их. Когда они снова отправляют страницу, количество слешей значительно увеличивается с каждым отправлением с ошибками. Код, который я имею, прост и использует stripslashes($_POST['first'])
а затем отправляет обратно ошибки. Я пытался также str_replace
избавиться от последнего \
но это не работает. Есть идеи?
Код РЕДАКТИРОВАТЬ --------
$first = stripslashes($_POST[f_name]);
$first = str_replace('\\' , '', $_POST[f_name]);
5 ответов
stripslashes()
только удаляет первый последовательный обратный слеш (когда они являются последовательными), потому что обратный слеш используется для экранирования обратного слеша.
Вы должны использовать str_replace("\\", "", $_POST['first']);
обновить, если вы пытаетесь удалить косые черты, используйте str_replace("/", "", $_POST['first']);
У вас есть magic_quotes включен? Stripslashes удалит только те символы, которые использовались для выхода из символа. Поэтому, если вы ХОТИТЕ \ в своем тексте, вам нужно экранировать его, используя два: \. В этом случае два \ будут преобразованы в один \ с полосками. Сделайте print_r($_POST) перед выполнением какой-либо обработки, чтобы увидеть, что на самом деле находится в POST.
У меня была похожая проблема, и я использовал очень грубое решение.... Я только что реализовал функцию stripslashes дважды подряд, или в вашем случае:
$first_temp = stripslashes($_POST[f_name]);
$first = stripslashes($first_temp);
Грубый но у меня сработало!
Я думаю, что ваш почтовый массив включает в себя что-то, взятое из базы данных, например "is \'t or Not \'t", для обновления в базу данных. Затем вы делаете одну вещь, когда вы читаете данные в поле использования
stripeslashes(данные ['description_to_textarea'])
решение проблемы