Я пытаюсь использовать функцию stripslashes_deep в документации PHP как метод, но когда я передаю ему массив, это не сработает. Однако он работает со строкой. Может ли кто-нибудь указать, почему это может не работать? Магические кавычки включены, потому что я тестирую эту возможность, но, как я уже сказал, она работает для строки, и я также не тестирую данные $ _POST или $ _GET. Вот код:Устранение проблемы рекурсивного метода stripslashes в PHP
protected function stripslashes_deep($input){
return is_array($input) ? array_map($this->stripslashes_deep, $input) : stripslashes($input);
}
Строка 'O \' Reilly»преобразуется в 'O'Reilly', но массив ниже остается неизменным:
Array ([0] => Array ([идентификатор пользователя ] => 23 [0] => 23 [username] => O \ 'Reilly [1] => O \' Reilly [userFirstName] => Bill [2] => Bill [userLastName] => O \ 'Reilly [ 3] => O \ 'Reilly))
Любая помощь была бы принята с благодарностью.
Edit:
Массив поступает из базы данных и имеет косую черту, потому что он был вставлен со связанными параметрами с помощью объекта PDO. Я расширил PDO, и я пытаюсь автоматически сбрасывать косые черты, когда я извлекаю массив, поэтому мне не нужно вызывать stripslashes каждый раз, когда я выводю данные. Если кто-нибудь знает, как лучше это сделать, я определенно открыт для предложений. Я не видел какой-либо метод unquote для PDO.
Почему обратные косые черты в массиве, который, как представляется, исходит из функции mysql_fetch_array()? – Gumbo
Ну, тогда кажется, что и вы, и PDO добавили косые черты при вставке данных. В противном случае косые черты там не будут. Но вам не нужно делать это с использованием PDO. Кроме того, вы должны проверить Magic Quotes и отключить их. – Gumbo
Magic Quotes добавляет косые черты при входе ... это может быть проблемой. – VirtuosiMedia