От автора: приветствую вас, друзья. В данной статье мы с вами продолжим тему того, как получить список стран для HTML формы. Напоминаю, в первой части статьи мы с вами фактически реализовали данную задачу. Однако, есть небольшой нюанс — в значении тега option вместо страны указан код телефона, т.е. вариант получился не совсем гибким. Попробуем усовершенствовать его. Продолжим?
Исходные файлы текущей статьи вы можете скачать по ссылке.
Напомню, в предыдущем уроке мы формально решили поставленную задачу, получив выпадающий список стран:
При этом код списка выглядит следующим образом:
Итак, как же нам сделать исходный вариант чуть более гибким? Ответ очевиден — необходимо иметь под рукой именно массив стран, а не готовый код HTML, в котором эти страны уже использованы. Таким образом, имея массив стран, мы можем гибко его использовать: формировать нужную нам разметку, выводить страны не в списке формы select, а, скажем, в ненумерованном списке ul. Да, в общем, мы вольны делать что угодно в этом случае. У нас есть два варианта решения проблемы:
выбирать все страны вручную, формируя из них массив
попробовать автоматизировать процесс, доверив формирование списка стран программе
Конечно же, мы выберем второй вариант, ведь человек по своей природе ленив, а лень, как известно, — двигатель прогресса 🙂
Потратим несколько минут времени на автоматизацию процесса, чтобы в итоге получить необходимый результат. При этом неважно насколько велик список, пусть там будут хоть тысячи значений — все они будут получены фактически мгновенно.
Для решения задачи проще всего воспользоваться возможностями регулярных выражений. Нам понадобится составить шаблон регулярного выражения, который выберет содержимое текстовых узлов тега option. К слову, если вы не знакомы с регулярными выражениями, тогда обязательно посмотрите наш курс по регулярным выражениям.
Скопируем код всего списка и воспользуемся вот этим сервисом. Вставим скопированный код и начнем составлять регулярное выражение.
Шаблон регулярного выражения для данных элементов списка будет следующим:
1 |
/<[^>]+>([^<]+)<\/option>/ig |
Результат именно тот, который нам нужен:
В качестве строки замены мы просто вставили следующее — «$1», — т.е. обрамили запомненные названия стран кавычками и поставили после них запятую. Остается скопировать эти страны и использовать их в нашей программе в качестве массива, по которому мы и пройдемся в цикле:
1 2 3 4 5 6 |
$countries = ["Россия", "Абхазия", "Австралия", ...]; <select class="form-control" name="country" id="country"> <?php foreach($countries as $country): ?> <option value="<?=$country?>"><?=$country?></option> <?php endforeach; ?> </select> |
В результате мы получим нужный нам список стран в форме, но при этом мы не ограничены в выборе разметки и можем использовать массив стран с абсолютно любым кодом.
На этом мы завершим данную статью. Если вас интересует тема валидации форм и работы с ними, рекомендую посмотреть этот урок. На этом все. Удачи!