Я тоже столкнулся с этой проблемой.Я использую смесь Zend_Locale и пользовательского XML-файла.
Zend_Locale используется для создания списка стран:
$locale = new Zend_Locale(Zend_Locale::BROWSER);
$countries = $locale->getTranslationList('Territory', Zend_Locale::BROWSER, 2);
asort($countries, SORT_LOCALE_STRING);
// unset invalid countries
unset($countries['SU'], $countries['ZZ'], $countries['IM'], $countries['JE'], $countries['VD']);
Тогда мой пользовательский XML-файл выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<countries>
<AD>
<region>Andorra</region>
<region>Parròquia de Canillo</region>
<region>Parròquia d'Encamp</region>
<region>Parròquia de la Massana</region>
Где каждый дочерний элемент <countries>
представляет собой двухбуквенный код страны, соответствующий значению ключа $countries
.Затем я использую ajax / php / xpath для повторного заполнения раскрывающегося списка штата / провинции в любое время, когда изменяется значение раскрывающегося списка страны.
Не стесняйтесь загружать мой файл XML здесь: http://gregan.org/provinces.xml Я не знаюя не помню, где я получил исходные данные, и при этом я не гарантирую, что они действительны