php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.12.2011, 13:52  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Dann ist ja alles in Butter. Die Bemerkung von Arne #4 ist m.E. voll berechtigt, denn die unpack allein hilft mir nicht weiter und ist identisch mit der bin2hex.
Der Beitrag von fireweasel hat mich noch auf eine Idee gebracht:
PHP-Code:
<?php
/*
* function liefert einen string, in dem alle nicht druckbaren Zeichen
* in der hexadezimalen Schreibweise \xzz (z=Ziffer) dargestellt werden
*/
  
function str2print($s) {
    return 
preg_replace_callback(
      
'/./sS'
      function(
$p) {$c=$p[0]; return ctype_print($c) ? $c '\x'.bin2hex($c);}, 
      
$s
    
);
  }
  
$s1 "\x06abc\r\nzweite zeile";
  echo 
str2print($s1);  //Ausgabe: \x06abc\x0d\x0azweite zeile
  
$s2 chr(0).chr(1).chr(3)."normaler Text".chr(0);
  echo 
str2print($s2);  //Ausgabe: \x00\x01\x03normaler Text\x00
  //Ausgabe benutzen
  
$s3 "\x00\x01\x03normaler Text\x00";
  if(
$s2 == $s3) echo '<br/>identischer String von $s2 als $s3 erzeugt<br/>'
?>
LG + vielen Dank
jspit
jspit ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.12.2011, 20:30  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von jspit Beitrag anzeigen
... Ich benötige die function zum Debugging. Sie soll 2 Aufgaben erfüllen:
1. Es sollen alle Zeichen im String (nicht nur \r, sondern auch \x06 ..)vernünftig lesbar sichtbar gemacht werden,
Stichwort Socket-Funktionen.
Oft reicht rawurlencode() dafür aus; ...

Zitat:
2. Per Copy&Paste möchte ich gleichzeitig einen String zur Verfügung haben, mit dem sich der Inhalt der Variablen schnell wieder herstellen lässt.
... und ist wieder umkehrbar mit rawurldecode(). Gut, Copy-n-Paste geht damit nicht so einfach ...

Zitat:
Zitat von jspit Beitrag anzeigen
Dann ist ja alles in Butter. Die Bemerkung von Arne #4 ist m.E. voll berechtigt, denn die unpack allein hilft mir nicht weiter und ist identisch mit der bin2hex.
Der Beitrag von fireweasel hat mich noch auf eine Idee gebracht:
PHP-Code:
<?php
/*
* function liefert einen string, in dem alle nicht druckbaren Zeichen
* in der hexadezimalen Schreibweise \xzz (z=Ziffer) dargestellt werden
*/
  
function str2print($s) {
    return 
preg_replace_callback(
      
'/./sS'
      function(
$p) {$c=$p[0]; return ctype_print($c) ? $c '\x'.bin2hex($c);}, 
      
$s
    
);
  }
 
//...
?>
...
Ich würde die Erkennung der umzuwandelnden Zeichen im Regex erledigen. Dann wird die Callback-Funktion nur aufgerufen, wenn es etwas zu "escapen" gibt:

PHP-Code:
preg_replace_callback
    
'/[\x0-\x1f\x5c\x7f-\xa0]/sS',  
    function(
$h) {return sprintf('\x%02x'ord($h[0]));},  
    
$input 
); 
Die Zeichenklasse kannst du entsprechend deinen Wünschen anpassen. Was die ctype-Funktionen so alles als "nicht druckbar" erkennen, entzieht sich meiner Kenntnis, aber ich glaube, die PCRE-Erweiterung hat eigene Zeichenklassen für sowas. Ich habe einfach mal die beiden Steuerzeichen-Bereiche, Backslash und das "Non-Breaking-Space" eingebaut. Wenn man mit UTF-8 hantiert, ist es manchmal sinnvoller, alles über \x7f zu kodieren, sonst gibt es lustige Effekte bei der Anzeige, wenn die Ausgabe-Umgebung (wie bspw. der Browser) Unicode-Code-Points interpretiert.

Geändert von fireweasel (19.12.2011 um 20:33 Uhr).
fireweasel ist offline   Mit Zitat antworten
Alt 20.12.2011, 08:25  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Hat was für sich, die Zeichenauswahl selbst in der Hand zu haben und dann ist es noch schneller. Vielen Dank!
jspit ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
socket: String -> Hex fehler ibeg PHP Einsteiger 10 16.11.2011 22:35
DI-Container xm22 Software-Design 44 07.08.2011 18:03
Knoten im Kopf, aus mehrdim. Array INSERT .. VALUES (..), (..) machen Chriz PHP Einsteiger 11 21.01.2011 15:55
[Erledigt] String von Sonderzeichen und Zahlen befreien pfump PHP Tipps 2010 10 19.11.2010 16:08
Sphider Umlaute und MySQL Fehler xnic Datenbanken 2 03.08.2010 20:10
[Erledigt] Exchange 2007 KalenderItems tarian PHP-Fortgeschrittene 1 26.05.2010 10:23
Alle Zeilen wo Spalte in String vorkommt / LIKE? scub Datenbanken 2 11.03.2010 00:08
Scriptangebot Codieren von Texten Ryuuzaki93 Scriptbörse 9 08.02.2010 23:14
Records mit PHP ? SimStar001 PHP Tipps 2009 11 08.04.2009 15:14
Persistence Framework #Avedo Software-Design 37 28.03.2009 17:32
string in string suchen,ersetzen,zusammenfügen und update machen litterauspirna PHP Tipps 2009 24 08.01.2009 13:38
PHP5 SOAP - Problem mit Arrays Calexico PHP-Fortgeschrittene 0 11.09.2008 12:06
Event abfangen Ambience JavaScript, Ajax und mehr 4 30.08.2007 14:36

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
echo hexadezimale zeichenkette darstellen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:30 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum