Eine explode () -Funktion, die Zeichen in Anführungszeichen ignoriert?

8

Kennt jemand eine schnelle und einfache Funktion explode() like, die Teilerzeichen ignorieren kann, die in einem Paar beliebiger Zeichen eingeschlossen sind (z. B. Anführungszeichen)?

Beispiel:

%Vor%

sollte zu einem Array mit den folgenden Elementen führen:

%Vor%

Die Tatsache, dass die Zeichen in einfache Anführungszeichen eingeschlossen sind, würde sie davor bewahren, Splitter zu sein.

Bonuspunkte für eine Lösung, die mit zwei Wrapper-Zeichen umgehen kann

%Vor%

Eine native PHP-Lösung wäre vorzuziehen, aber ich glaube nicht, dass so etwas existiert!

    
Pekka 웃 16.07.2010, 12:24
quelle

3 Antworten

6

str_getcsv ($str, '/')

Auf der verlinkten Seite gibt es ein Rezept für & lt; 5.3.

    
Ignacio Vazquez-Abrams 16.07.2010, 12:29
quelle
4

Das ist mit preg_split fast unmöglich, weil Sie nicht aus der Mitte der Zeichenkette unterscheiden können, ob Sie zwischen Anführungszeichen stehen oder nicht. % Co_de% kann jedoch den Job erledigen.

Einfache Lösung für eine einzige Art von Angebot:

%Vor%

Diese Funktion wird alle Arten von Problemen haben, wenn Sie bestimmte Sonderzeichen (\ ^ -] übergeben, laut Ссылка ), also musst du denen entkommen. Hier ist eine allgemeine Lösung, die spezielle Regex-Zeichen entzieht und mehrere Arten von Anführungszeichen separat verfolgen kann:

%Vor%

(Beachten Sie, dass ich alle Variablen zwischen eckigen Klammern aufbewahre, um zu minimieren, was zu entkommen ist - außerhalb von eckigen Klammern gibt es etwa doppelt so viele Sonderzeichen.)

Wenn Sie] als Zitat verwenden wollten, dann wollten Sie wahrscheinlich [als entsprechendes Zitat verwenden, aber ich werde diese Funktionalität als Übung für den Leser hinzufügen. :)

    
Brilliand 07.12.2012 01:19
quelle
0

Etwas sehr nah mit preg_split: Ссылка

Es verarbeitet mehrere Wrapper-Zeichen UND mehrere Trennzeichen.

    
greg0ire 16.07.2010 12:36
quelle

Tags und Links