2011-01-19 10 views
7

que quería convertir siguiente función de división, que i estado usando a su preg_split .. poco confuso, ya que el valor cambiará vez en cuando ..php divide a preg_split

current code: 
$root_dir = 'www'; 
$current_dir = 'D:/Projects/job.com/www/www/path/source'; 
$array = split('www', 'D:/Projects/job.com/www/www/path/source', 2); 
print_r($array); 



output of the split function: 
Array ([0] => D:/Projects/job.com/ [1] => /www/path/source) 
+1

¿Por qué quiere usar 'preg_split'? – lonesomeday

+0

es 'split' solo una función que usa' preg_split'? y por qué no utilizas explotar? – RobertPitt

+0

@RobertPitt: 'split()' es una función vieja y obsoleta que no usaba PCRE en absoluto, pero sí una sintaxis/motor regex diferente. – BoltClock

Respuesta

15

preg_split() es similar a la antigua división ereg-función(). Sólo tiene que incluir la expresión regular en /.../ así:

preg_split('/www/', 'D:/Projects/job.com/www/www/path/source', 2); 

El cerramiento barras diagonales / aquí son realmente parte de la sintaxis de expresiones regulares, no buscado en la cadena. Si el delimitador www es variable, también debe usar preg_quote() para la parte interna.

Pero tenga en cuenta que no necesita expresiones regulares si solo busca cadenas estáticas de todos modos. En tales casos, puede utilizar explode() más o menos como antes split() antes:

explode('www', 'D:/Projects/job.com/www/www/path/source', 2); 
+0

gracias por la respuesta. No puedo aceptarlo, porque me está dando un masaje, que puedo aceptar después de 2 minutos ... pero funciona, gracias – Basit

+0

¿Por qué no es preg_split es más rápido que explotar? – Basit

+3

@Basit: por lo general. Explode realiza una búsqueda binaria simple, y no tiene que buscar patrones complejos/opcionales. También se implementa como función central de PHP, por lo tanto, puede tratar mejor las cadenas de PHP y generar una matriz de PHP directamente. La función preg_split() es más lenta porque realiza una ida y vuelta sobre libPCRE. - Entonces explotar() siempre es más rápido. (La expresión regular que coincide con preg_match() OTOH a menudo puede ser más eficiente que la simple aritmética de función de cadena PHP.) – mario

Cuestiones relacionadas