2009-02-12 5 views
1

Я пытаюсь использовать функцию 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.

+0

Почему обратные косые черты в массиве, который, как представляется, исходит из функции mysql_fetch_array()? – Gumbo

+0

Ну, тогда кажется, что и вы, и PDO добавили косые черты при вставке данных. В противном случае косые черты там не будут. Но вам не нужно делать это с использованием PDO. Кроме того, вы должны проверить Magic Quotes и отключить их. – Gumbo

+0

Magic Quotes добавляет косые черты при входе ... это может быть проблемой. – VirtuosiMedia

ответ

7
array_map($this->stripslashes_deep, $input) : stripslashes($input); 

Должно быть:

array_map(array($this, 'stripslashes_deep'), $input) : stripslashes($input); 

Если ваш намерены это отменить волшебные кавычки, вы не должны реализовать рекурсивно кстати, так как он имеет некоторые проблемы производительности и безопасности.. См.: http://talks.php.net/show/php-best-practices/26

+0

Я буду проверять это, спасибо за ссылку. – VirtuosiMedia

Смежные вопросы