我正在努力使用基于语言检测将用户重定向到其他页面的代码。我发现这个代码看起来很有希望,到目前为止我还没有从这个网站上的其他帖子中获得任何运气。我唯一的问题是与第一行代码有关。我在第一行的“”部分放了什么?
<?php
$lc = ""; // Initialize the language code variable
// Check to see that the global language server variable isset()
// If it is set, we cut the first two characters from that string
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
$lc = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
}
// Now we simply evaluate that variable to detect specific languages
if($lc == "fr"){
header("location: index_french.php");
exit();
} else if($lc == "de"){
header("location: index_german.php");
exit();
}
?>
<h2>Hello Default Language User</h2>
<h3><?php echo "Your 2-letter Code is: ".$lc; ?></h3>
当我运行此代码时,我收到一条错误消息:
警告:无法修改标题信息 - 已在第12行/home/m3418630/public_html/sumoresources/index.php中发送的标题(由/home/m3418630/public_html/sumoresources/index.php:3开始输出)< / p>
有人可以解释为什么会这样吗?
感谢
答案 0 :(得分:0)
你没有把任何东西放在那里,它只是像评论中所说的那样启动变量。
如果您收到标题已发送错误,则表示您在发送标题()之前向页面输出信息,如果不使用ob_start(),ob_end_flush()进行缓冲,则无法执行此操作。< / p>
答案 1 :(得分:0)
在您的代码段中,您必须为变量$lc
设置默认语言。如果服务器从当前请求发送语言代码,它将被覆盖。
答案 2 :(得分:0)
此代码段可以检测用户浏览器中的语言
$locale = null;
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
foreach ($languages as $lang) {
$lang = str_replace('-', '_', trim($lang));
if (false === strpos($lang, '_')) {
$locale = strtoupper($lang);
} else {
$lang = explode('_', $lang);
if (count($lang) == 3) {
$locale = strtolower($lang[0]) . ucfirst($lang[1]) . strtoupper($lang[2]);
} else {
$locale = strtolower($lang[0]) . strtoupper($lang[1]);
}
}
}
}
echo $locale;