Hex Code <NUL> wird bei $IPS_VALUE angezeigt bei normaler Variable nicht

Hallo
Sorry für den blöden Titel, aber ich weiß echt nich wie ich das umschreiben soll. :confused:

Ich lese eine Registervariable ein, die wird zerlegt und der Text mit

function hex2str($hex)
{
$str = "";
for($i=0;$i<strlen($hex);$i+=2)
$str.=chr(hexdec(substr($hex,$i,2)));
return $str;
}

angezeigt.

In der Registertvariablen stehen unter anderem auch Steuerzeichen z.B. 3C4E554C3E ().

Wenn ich zum testen den „HexText“ mit „3C46463E3C5354583E3C4E554C3E783C53493E“ als Variable anlege und die dann durch die Funktion schicke, kommt nur der erwünschte Text hier „x“ raus.
Wenn aber der gleiche Text von der Registervarible kommt wird „x“ ausgegeben.
Wäre ja nicht so schlimm und störte mich eigentlich nicht bzw. is mir garnich so aufgefallen, bis ich den Text als e-mail verschicken wollte.
Die e-mails die IPS aufgrund von $IPS_VALUE verschickt hat kamen nie an.
Die Test e-mails kommen alle an, aber sobald ich auf die Registervariable umstelle kommen die e-mails zurück mit dem Hinweis

Message contains NUL characters

Hat mich einige Zeit gekostet bis ich darauf gekommen bin, hab erst den Fehler bei meinen Programmierkünsten gesucht bis ich mal beim email Dienst nachgeschaut hab.

Jetzt aber zu den Fragen:

  1. warum funktioniert das nur bei IPS_VALUE und nicht mit nem Test-Text.

  2. Wie kann ich die Registervariable dann Simulieren damit ich auch mit bzw. allen Steuerzeichen testen kann.

  3. Gibts noch ne andere möglichkeit als

str_replace("3C4E554C3E","",$hextext);

um <NUL> rauszubekommen z.B. um auch die anderen Steuerzeichen rauszuschmeissen?

Danke schonmal und gruß Jannis