pack() in php. Illegal hex digit Warnung
ich habe einige Probleme mit pack() in php
$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;
}
Nun manchmal bekomme ich folgende Warnungen läuft die gleiche code -
Warning: pack() [function.pack]: Type H: illegal hex digit g in /code/FR2BVl
die illegal hex digit hält unterschiedliche wenn. Irgendwelche Ideen, über diese Warnung und Wege, um es zu entfernen.
überprüfen Sie es live hier
- Poste mehr code. Die
str_replace()
auf$alert_device
macht mich denken, dass es mehr code in der Mitte, könnte ändern den Inhalt$alert_device
. Mit dem code wie geschrieben, Sie sollten nicht die Fehlermeldung, die Sie erhalten. - sehen Sie die bearbeitete Frage.
- In meinem Fall erhielt ich diese Fehlermeldung, wenn ich versuchte, übergeben Sie einen leeren Wert (oder einen Schrägstrich /) auf der pack () - Funktion. Ich fand heraus, was die Folge hatte, dass die leeren Wert und behoben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
pack
konvertiert hexadezimale Zahl in eine Binärzahl um, z.B.:produziert
!3
, da!
code 0x21 und3
- code 0x33. Dag
ist keine hex-Ziffer, Warnung. Um nützlich zu sein für die pack ' sH
format, das argument muss hex-Zahl. Wenn$alert_device
nicht - sollte man etwas anderes verwenden, je nachdem, was es ist und was Sie erwarten als Ergebnis.Einer der Gründe für die Fehler im Zusammenhang mit den Prüfsummen,
Den Fehler zu beheben, könnte dies ausreichend sein,
In diesem Fall,
Ref: https://github.com/bearsunday/BEAR.Package/issues/136
Verwenden
strtr(rtrim(base64_encode(pack('H*', sprintf('%u', $algo($data)))), '='), '+/', '-_')
statt mitpack('H*', $value)
.Ich hatte das gleiche Problem bei der Entwicklung von hybrid-Apps mit Ionic/Cordova/PhoneGap. Als der gleiche code in Android und iOS-Geräte, ich hatte einen Fehler gemacht, die Speicherung der Google-FCM-token als APNS-token. Der APNS-token ist rein hexadezimalen aber Google FCM-token können nicht-hexadezimale Zeichen. Also, packen ein Google FCM-token mit Hilfe von PHP -
pack()
- Funktion wird das Ergebnis in derillegal hex digit
Fehler.GoogleService-Info.plist
im root-directory, Das war mein Fehler.In diesem Fall
$alert_device
ist ein array.Für die Verpackung braucht es ein Wert.
Verwenden
pack('H*', str_replace(' ', '', $alert_device[0]))
statt.Müssen Sie ändern
Zu
Versuchen, speichern Sie Ihre Datei in utf-8-Codierung.