【发布时间】:2011-06-11 14:04:41
【问题描述】:
我在 php 中使用 pack() 时遇到一些问题
$currencypair = "EUR/USD";
$buy_sell = "buy";
$alert_device_token =array("a","a","b");
$message = "Your " . $currencypair . " " . $buy_sell . " alert price has been reached!";
$payload['aps'] = array (
'alert' => $message,
'badge' => 1,
'sound' => 'default'
);
$payload = json_encode($payload);
foreach ($alert_device_token as $alert_device)
{
$apnsMessage = chr(0) . chr(0) . chr(32) .
pack('H*', str_replace(' ', '', $alert_device)) .
chr(0) . chr(strlen($payload)) . $payload;
echo $apnsMessage;
}
现在有时我会在运行相同代码时收到以下警告 -
Warning: pack() [function.pack]: Type H: illegal hex digit g in /code/FR2BVl
虽然非法的十六进制数字不断变化。有关此警告的任何想法以及删除它的方法。
现场查看here
【问题讨论】:
-
发布更多代码。
$alert_device上的str_replace()让我觉得中间有更多代码可以修改$alert_device的内容。使用发布的代码,您应该不会收到您遇到的错误。 -
@sander:查看已编辑的问题。
-
就我而言,当我尝试将空值(或斜杠 /)传递给 pack() 函数时收到此错误。我找出了导致空值的原因并修复了它。