PHP: nur lesbare zeichen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beispiel
beitrag
bereich
bit
drum
frei einstellbar beitrag
funktion
grad
gut anscheinend
kodierung
lsen
lsung
methode
schwachsinn
teilweise
warte
window
-
hi,
gibt es eine Funktion die aus einem String (der alle Zeichen des ASCII-Codes enthalten kann) nur die lesbaren anzeigt? Das z.B. das Zeichen 0x09 (TAB) mit z.B. einem "." ersetzt wird.
EDIT:
gut anscheinend hat niemand hier n lösung, da hab ich grad selber n funkion geschrieben:
php function onlyreadables($string) { for ($i=0;$i<strlen($string);$i++) { $chr = $string{$i}; $ord = ord($chr); if ($ord<32 or $ord>126) { $chr = "."; $string{$i} = $chr; } } return $string; }
Beitrag geändert: 4.11.2006 19:18:27 von jpaket -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ja klar gibt es eine...
bsp:
<?php $text = "hallo.welt!" echo $text; $text = replace(".", " "); //hallo.welt! == hallo welt! $text = replace("h", "H"); //hallo welt! == Hallo welt! $text = replace("w", "W"); //Hallo welt! == Hallo Welt! $text = replace("!", "."); //Hallo Welt! == Hallo Welt. echo $text; ?>
-
Deine Methode ist Schwachsinn, oc-hp.
Du ersetzt einzelne zeichen aus einem kleinen String. Was machst du, wenn du "Hallo du schöne Welt!" als String benutzt? Das ist unmöglich.
Jpaket hingegen hat ein Script geschreiben, das alle lesbaren Zeichen erlaubt und andere verbietet. Das ist zum beispiel nützlich wenn er etwas Drucken will. ;D -
hi,
gibt es eine Funktion die aus einem String (der alle Zeichen des ASCII-Codes enthalten kann) nur die lesbaren anzeigt? Das z.B. das Zeichen 0x09 (TAB) mit z.B. einem "." ersetzt wird.
EDIT:
gut anscheinend hat niemand hier n lösung, da hab ich grad selber n funkion geschrieben:
Halt! Warte doch mal -- ich hab doch nicht den ganzen Tag Zeit, zu schauen, ob schon wieder jemand ein Problem lösen möchte, dass nach preg_replace() schreit ...
php function onlyreadables($string) { for ($i=0;$i<strlen($string);$i++) { $chr = $string{$i}; $ord = ord($chr); if ($ord<32 or $ord>126) { $chr = "."; $string{$i} = $chr; } } return $string; }
Nunja, das Problem ist, was du unter "nicht lesbaren" Zeichen verstehst. In üblicher 8-Bit-Kodierung (ISO-8859-1) sind das die Bereiche von 0 bis 31 sowie 127 bis 159. Wenn man aber bspw. Windows-1252 einsetzt, ist der Bereich 127 bis 159 teilweise belegt. Sei's drum:
/*
\x1f == 31
\x7f == 127
\x9f == 159
*/
function mask_ctrl_chars(
$string = '',
$marker = '.'
) {
return preg_replace('/[\x00-\x1f\x7f-\x9f]/', $marker, $string);
}
Schaut kürzer aus, oder?^^
Nebenbei ist das Ersetzungszeichen frei einstellbar.
Beitrag geändert: 1.7.2007 23:28:33 von alopex -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage