Frage

Ich habe diese Zeichenfolge:

Rosemary J. Harris $^{1}$, Vladislav Popkov $^{2}$ and Gunter M. Sch\"utz $^{3,}$*

Und ich würde es anlegen, es mit Kommas (,) oder "und" String zu teilen.

Das Ergebnis sollte also sein:

[0] -> Rosemary J. Harris $^{1}$
[1] -> Vladislav Popkov $^{2}$
[2] -> Gunter M. Sch\"utz $^{3,}$*

Ich habe das versucht:

$splitAuthors = preg_split('/[, ]+[ and ]/', $authors);

Welches kehrt zurück:

[0] -> Rosemary J. Harris $^{1}$
[1] -> Vladislav Popkov $^{2}$
[2] -> nd Gunter M. Sch\"utz $^{3,}$*

Es gibt das "ND" im letzten Array -Element.

Danke für Ihre Hilfe.

War es hilfreich?

Lösung

Verwenden Sie dafür keine Zeichenklassen, verwenden Sie den oder Separator |

Dies sollte Ihnen die richtige Ausgabe geben:

preg_split("/, | and /",$data)

Gibt die folgende Ausgabe an:

Array
(
    [0] => Rosemary J. Harris $^{1}$
    [1] => Vladislav Popkov $^{2}$
    [2] => Gunter M. Sch\"utz $^{3,}$*
)

Andere Tipps

[] definieren a Charakterklasse. Diese passen zu einem einzigen Charakter, bei dem dieser Charakter eines der Zeichen in der Klasse sein kann. Sie suchen also nach einem Platz in Ihrer Schnur, an dem dieser Ort entweder einen Raum enthält, und a, ein n, oder ein d. Es sucht nicht nach der Welt "und" mit Räumen auf beiden Seiten. Sie wollen wahrscheinlich ( and ) stattdessen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top