Pregunta

Tengo esta cadena:

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

Y me mentiría para dividirlo con comas (,) o "y" cadena.

Entonces, el resultado debería ser:

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

Intenté esto:

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

Que está volviendo:

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

Existe el "ND" en el último elemento de matriz.

Gracias por tu ayuda.

¿Fue útil?

Solución

No use clases de caracteres para esto, use o seperator |

Esto debería darle la salida correcta:

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

Da la siguiente salida:

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

Otros consejos

[] Definir un clase de carácter. Estos coinciden con un solo personaje, donde ese personaje puede ser cualquiera de los personajes de la clase. Entonces estás buscando un lugar en tu cadena donde ese lugar contiene un espacio, un a, un n, o un d. No está buscando el mundo "y" con espacios a ambos lados. Probablemente quieras ( and ) en cambio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top