Рекурсія в php
Відео: php для початківців: Рекурсивні функції, урок 24
Відео: Рекурсія
Щось таке рекурсія, багато хто з Вас знають. Але, про всяк випадок, рекурсія - це виклик функції всередині самої себе. Однак, це визначення все знають, але ось з розумінням виникають неясності. Я вирішив в цій статті розібрати рекурсию в PHP на досить простому і реальному прикладі з практики.
Не секрет, що всі дані (за рідкісним винятком), що приходять з форм, треба пропускати через функцію htmlspecialchars (), щоб уникнути XSS. І я думаю, що Ви знаєте, що деякі вхідні дані є масивами (наприклад, при тій же завантаженні файлів). І наша з Вами завдання написати таку функцію, яка приймає масив всіх вхідних даних, а також врахувати, що серед цих даних є також масиви, всередині яких також можуть бути масиви і так далі.
Відео: Лекція 3: Рекурсивні функції
Наводжу код функції:
lt ;?php
function xss($ data){
if(is_array($ data)){// Якщо це масив
$ result = array() -// Створюємо новий масив
foreach($ data as $ key = Gt; $ value){// Перебираємо вихідний масив
$ result[$ key]= xss($ value) -// Рекурсивно викликаємо функцію xss
}
return $ result-// Повертається "захищений" масив
}
return htmlspecialchars($ data, ENT_QUOTES) -// Якщо це не масив, то викликаємо htmlspecialchars ()
}
$ data = xss($ _REQUEST) -// Приклад виклику функції
?gt;Ключовим моментом тут є, що внутрішніх масивів всередині вхідного $ data може бути дуже багато, тому без рекурсії в PHP тут не обійтися. А сам алгоритм простий:
Відео: PHP для початківців 38
- Якщо вхідні дані - це НЕ масив, то просто викликаємо функцію htmlspecialchars ().
- Якщо вхідні дані - це масив, то перебираємо всі елементи масиву і для кожного викликаємо цю ж функцію. А далі повертаємося до пункту 1.
Я розумію, що для новачків рекурсія в PHP - це досить складна річ, але я рекомендую прямо пройтися по коду, як ніби Ви інтерпритатор PHP. Тоді стане все ясніше.
Drag and drop завантаження файлів на сервер. Частина 3.
Як створити асоціативний масив в jаvascript
Як динамічно отримувати коментарі з бази даних.
Як убезпечити сайт
Нові функції в php 5.5.
Сортування двовимірного масиву на php
Створення функцій в php
Формат json
Методи для роботи з масивами в es5.
Робота з масивами в php
Робота з xml-документом в php
Чи не працює sql-запит
Видалення каталогу з файлами в php
Робота з масивами в html-формі
Анонімні, або лямбда-функції в php.
Масиви в jаvascript
Глобальні змінні в php
Довідкові змінні php
Створення динамічної функції на php
Розбиття і об`єднання рядків в php
Функція array_pad в php.
Створення і перебір масивів в php
Drag and drop завантаження файлів на сервер. Частина 3.
Робота з xml-документом в php
Робота з масивами в php
Формат json
Створення динамічної функції на php
Як динамічно отримувати коментарі з бази даних.
Видалення каталогу з файлами в php
Сортування двовимірного масиву на php