klausschreiber
Well-known member
- 6 Mai 2006
- 247
- 8
Hallo,
ich habe einen String, der auch nicht darstellbare Zeichen enthält. Diesen will ich in ein Array aufteilen.
Erstmal ein Beispiel mit darstellbaren Zeichen:
Bei jedem "Q" wird der Text aufgeteilt und zwar nur bei genau einem "Q". Dies funktioniert folgendermaßen einwandfrei:
Das Problem ist aber, dass das Trennzeichen, das ich benötige, leider kein einfaches "Q" ist, sondern das nicht darstellbares Hexdezimalzeichen "00". Der String, den ich teilen möchte, konmmt von einer Datei, die vorher hochgeladen wird, aber das ist ja im Grunde egal. Mein erster Versuch sah folgendermaßen aus:
Der Versuch gab jedoch folgende Fehlermeldung:
Über Google habe ich dann herausgefunden, dass man in regulären Ausdrücken anscheinend auch hexdezimalzeichen in folgender Form verwenden kann: "\xnn".
Daraufhin habe ich es mit folgendem regulären Ausdruck versucht:
Die Fehlermeldung war jedoch die selbe. Auch die Einschließung des regulären Ausdrucks in andere Zeichen als "/" brachte kein Erfolg. (z.B.
Ich würde mich sehr freuen, wenn jemand weiß, was da falsch ist, bzw. wie ich es richtig machen muss.
Gruß,
Klaus
ich habe einen String, der auch nicht darstellbare Zeichen enthält. Diesen will ich in ein Array aufteilen.
Erstmal ein Beispiel mit darstellbaren Zeichen:
soll in Folgendes umgewandelt werden:BamboQQdas ist ein testQklausQQhallo, wie gehtsQmichiQQdas ist tollQ
Code:
Array ( [0] => BamboQQdas ist ein test [1] => klausQQhallo, wie gehts [2] => michiQQdas ist toll )
PHP:
$string = "BamboQQdas ist ein testQklausQQhallo, wie gehtsQmichiQQdas ist tollQ";
$regexp = "/(?<!Q)Q(?!Q)/";
$array = preg_split($regexp, $string, -1, PREG_SPLIT_NO_EMPTY);
print_r($array);
PHP:
// Funktion, die mir hexdezimale Zeichen in normale Zeichen umwandelt
function hex2bin($hex) {
$dec = hexdec($hex); // Umwandlung Von Hexdezimal zu Dezimal
$bin = chr($dec); // Rueckgabe des entsprechenden Ascci-Zeichens
return $bin;
}
$delimiter = hex2bin("00"); // Das Hexdezimalzeichen "00" wird umgewandelt
$regexp = "/(?<!" . $delimiter . ")" . $delimiter . "(?!" . $delimiter . ")/"; // regulärer Ausdruck mit dem Hexzeichen "00" anstatt Q
$array = preg_split($regexp, $file, -1, PREG_SPLIT_NO_EMPTY);
print_r($array);
(Zeile 29 ist das "$array = preg_split ..."Warning: preg_split() [function.preg-split]: No ending delimiter '/' found in D:\Programmierung\Web\eigene_Projekte\Poker\Komponenten\notekonverter\index.php on line 29
Über Google habe ich dann herausgefunden, dass man in regulären Ausdrücken anscheinend auch hexdezimalzeichen in folgender Form verwenden kann: "\xnn".
Daraufhin habe ich es mit folgendem regulären Ausdruck versucht:
PHP:
$regexp = "/(?<!\x00)\x00(?!\x00)/"
PHP:
$regexp = "%(?<!\x00)\x00(?!\x00)%"
Ich würde mich sehr freuen, wenn jemand weiß, was da falsch ist, bzw. wie ich es richtig machen muss.
Gruß,
Klaus