Jörg Reinholz: Zeichen elimenieren - POS Drucker druckt nicht

Beitrag lesen

Moin!

echo preg_replace("[[:^print:]]"," ",$x)."\n";

zieht er mir zu viel Zeichen raus.
Ich weiß, dass er zB. email-Adressen mit @ und Punkt druckt.

Hä? Wenn Du die Syntax frei verballhornst, dann wundere Dich nicht über falsche Ergebnisse!

<?php
$haystack = "Ödipuß<foo@example.com>\r\n";
$search   = '/[^[:print:]ÖöÄäÜüß]\r\n/';
echo preg_replace($search, '_', $haystack);
echo "Ende\n";

Ergebnis:

fastix@trainer:/tmp$ php test_replace.php 
Ödipuß<foo@example.com>
Ende
fastix@trainer:/tmp$ 

Versuch 2:

<?php
$haystack = "Ödipuß<foo@example.com>\r\n";
$search   = '/[^[:print:]ÖöÜüÄäß\n\r]/';
echo preg_replace($search, '_', $haystack);
echo "Ende\n";

Ergebnis:

fastix@trainer:/tmp$ php test_replace.php 
Ödipuß<foo@example.com>
Ende
fastix@trainer:/tmp$ 

Versuch 3:

<?php
$haystack = "Ödipuß<foo@example.com>\r\n";
$search   = '/[^[:print:]ÖöÜüÄäß\n\r]/';
echo preg_replace($search, '_', $haystack);
echo "Ende\n";

Ergebnis:

php test_replace.php 
__dipu__<foo@example.com>
Ende
fastix@trainer:/tmp$ 

Es geht also sehr wohl.

BTW: Kann es sein, dass dem Drucker "Seiten" geliefert werden, bei denen der druckbare Bereich überschritten wird? Grund für die Annahme: Im Handbuch laß ich was von wegen mitgelieferte Schriftart benutzen.

Jörg Reinholz