您可以尝试实现一个“字典函数”:您使用您提到的地理代码调用它,它会返回您想要嵌入到 html 模板中的本地化内容。在后台,它查阅“目录”,通常是这样的数组结构:
$LCat = array (
'India' => array (
'Assam' => array (
'Dispur' => "some Dispur specific content",
'Guwahati' => "some Guwahati specific content",
... some other cities in that state ...
),
'Orissa' => array (
'Bhubaneswar' => "some Bhubaneswar specific content",
... some other cities in that state ...
),
... some other states in that country ...
),
... some other countries ...
);
该函数在目录中查找匹配条目(例如,通过使用 is_set() 函数):
if ( is_set($LCat[$_SESSION['smart_ip']['location']['country_code']]) ) {
if ( is_set($LCat[$_SESSION['smart_ip']['location']['country_code']['state_code']]) )
if ( is_set($LCat[$_SESSION['smart_ip']['location']['country_code']['state_code']['city_code']]) ) ) {
$Location=$LCat[$_SESSION['smart_ip']['location']['country_code']['state_code']]['city_code']];
} else {
$Location=$LCat[$_SESSION['smart_ip']['location']['country_code']['state_code']]
} else {
$Location=$LCat[$_SESSION['smart_ip']['location']['country_code']]
} else {
$Location="location specific content for 'Nirwana'";
}
所以结构是:州>国家>城市,或者你需要的任何结构。这个想法是:尝试使用目录中最具体的匹配。如果它不存在,则使用不太具体的条目,依此类推。这样,您始终可以在结构中编写安全的后备代码,而不必为脚本可能偶然发现的每个位置编写后备代码。
显然,为匹配存储的内容可以是任何内容,我只选择了简单的字符串来说明这一点。此外,该结构可以以不同的方式存储,例如在运行时检查的文件系统层次结构中,每个国家的文件夹,每个州的文件夹,每个城市的文件等。如果您想提高性能并提供一种简单的方法来管理目录数据,那么您应该将该目录存储在您在运行时查询的数据库中。不过,这个想法保持不变。
请注意,我尚未测试该代码,但它应该为您提供可能的方法的建议。