Я пошел со вторым вариантом. Я также смог сделать скрипт, который будет пытаться сопоставить как можно ближе название страны, например, для Тарту он будет пытаться сопоставить T **, затем TA * и, если возможно, TAR, если нет, он попробует TAT как T следующая буква после R в Тарту.
Код довольно обширный, я просто опубликую часть, которая использует первый возможный код:
$allowed = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ23456789';
$length = strlen($allowed);
$codes = array();
// store all possibilities in a huge array
for($i=0;$i<$length;$i++)
for($j=0;$j<$length;$j++)
for($k=0;$k<$length;$k++)
$codes[] = substr($allowed, $i, 1).substr($allowed, $j, 1).substr($allowed, $k, 1);
$used = array();
$query = mysql_query("SELECT code FROM location WHERE country = '$country'");
while ($result = mysql_fetch_array($query))
$used[] = $result['code'];
$remaining = array_diff($codes, $used);
$code = $remaining[0];
Спасибо за ваше мнение, это будет ключ к транспортным кодам по всему миру:)