[英]In_array doesn't see element in DateTimeZone::ALL_WITH_BC, why?
对不起我的英语(谷歌翻译有帮助)))
一般任务是检查接收到的 cookie 中是否存在时区。 如果“找到”,则将其发送到变量,如果不是“未找到”,则将其发送到默认变量。
我显示一个 DateTimeZone::ALL_WITH_BC 时区列表,当列表更改时,通过 in_array 创建一个带有值的 cookie,检查 DateTimeZone::ALL_WITH_BC 数组。 但是带有加号 + 的值不通过检查,即 Etc/GMT+3 等。
示例代码:
<?php
echo '<select id="List">';
$tzlist = DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC);
foreach($tzlist as $value)
{
echo '<option value='. $value .'>'. $value .'</option>';
}
echo '</select>';
$takeCookie = $_COOKIE['cookie'];
if (in_array($takeCookie, DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC)))
{
echo "Found";
}
else {
echo "Not Found";
}
?>
<script>
$("#List").change(function() {
var tz = $(this).val();
document.cookie = "cookie="+tz;
});
</script>
选择时区并刷新页面时,所有值都是“找到”,除了带+的,为什么?
例如,列表中的 select:
<option value="Etc/GMT+9">Etc/GMT+9</option>
饼干类型:
cookie=Etc/GMT+9
上面的示例代码显示“未找到”。
UPD好的,问题不在于 In_array))
问题在这里:
<script>
document.cookie = "cookie=Etc/GMT+9";
</script>
<?php
var_dump($_COOKIE['cookie']);
?>
结果:
string(9) "Etc/GMT 9"
加号 (+) 在哪里?
谢谢@Jeto,帮助使用 encodeURIComponent。 喜欢:
<script>
document.cookie = "cookie="+encodeURIComponent('Etc/GMT+9');
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.