2010-08-17 15 views
44

¿Cómo puedo dividir una cadena en la primera aparición de - (signo menos) en dos $ vars con PHP?

He encontrado cómo dividir en cada "-" pero no solo en la primera vez.

ejemplo:

this - is - line - of whatever - is - relevant 
$var1 = this 
$var2 = is - line - of whatever - is - relevant 

Nota, también despojó a la primera "-".

¡Gracias de antemano por la ayuda!

Respuesta

29
$array = explode('-', 'some-string', 2); 

Posteriormente, se podría hacer $var1=$array[0] y $var2=$array[1].

+0

Gracias, acabo de editar mi pregunta con más reqs, lo siento. – Jimbo

+0

Gracias Brad, esto también será útil. Aprecio tu tiempo. – Jimbo

103

Es muy simple, utilizando un parámetro de extra para explode que muchas personas no se dan cuenta es que hay:

list($before, $after) = explode('-', $source, 2);

+1

Eso es genial. Entonces, yo $ fixed_string = str_replace ("-", "", $ before); para deshacerse de la -? – Jimbo

+1

No, el primer '-' se eliminará como parte de la función' explosion() '. – staticsan

+1

Esto funcionó perfectamente para mis necesidades. Me preguntaba si agregué un $ middle y luego exploté - ¿fuente 3? ¿Eso funcionaría o debería usar array [x] como lo menciona Brad? – Jimbo

0

Aquí es lo que necesita: el uso de la lista() con explotar():

list($var1, $var2) = explode(' - ', 'this - is - line - of whatever - is - relevant', 2); 

Nota los espacios alrededor del "-" (signo menos)

1

puede utilizar la función strtok:

$first = strtok($string, '-'); 
Cuestiones relacionadas