Regex-Problem mit "["

Daddi

Mitglied
Hallo Community!
Ich kapier das leider mit den Regex nicht so ganz, deshalb muss ich euch damit hier jetzt auf die Nerven gehen ;)

Also, ich lasse per PHP Strings aus Textdateien auslesen, die folgerndermaßen aussehen:

Code:
#102 6x [250M] Chrono.Crusade.-.Ep09.-.Joshua.-.[Ger-Jap-Dub][Ger-Sub][H264][OGG].-.By.xblackyx.mkv

als Beispiel.
So, die sollen jetzt per Split getrennt werden, ist auch alles kein Problem, immer beim Leerzeichen.

Das Problem ist jetzt aber, das manchmal da steht [ 30MB] also, bei der Größenangabe noch ein Leerzeichen in den Eckigen Klammern steht und wenn er da splitted, gibts falsche einträge später in der Datenbank.

Kann mir jemand sagen, wie mein Regulärer Ausdruck ausehen muss, dass er die Leerzeichen findet aber die ignoriert, wo ein "[" davorsteht?

Also " "= ja und "[ " = nein.

Vielen Dank
Daddi
 
Probier mal Folgendes:
PHP:
$parts = preg_split('/(?!<\x5B)\x20/', $string);
Alternativ könntest du auch Folgendes probieren, da es vielleicht performant ist:
PHP:
$parts = sscanf('#%d %s [%s] %s', $string);
 
Also, das erste, brachte das slebe Ergebnis, wie einfach nur beim trennen bei jedem Leerzeichen.

Das 2. hatte mir die Daten irgendwie ganz zerschossen.
 
Du könntest mit preg_replace vorher diesen Teil des Strings ersetzen
preg_replace("/\[ /","[",$string);
und dann halt weiter im Text mit Split oder was auch immer.
geht natürlich auch eleganter....

greetz
pk
 
Zurück