2011-01-19 7 views
7

ho voluto convertire seguente funzione split, che ho usato per preg_split .. il suo po 'di confusione, perché il valore cambia di volta in volta ..php diviso per 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

Perché si vuole utilizzare 'preg_split'? – lonesomeday

+0

è 'split' solo una funzione che usa' preg_split'? e perché non usi l'esplosione? – RobertPitt

+0

@RobertPitt: 'split()' è una vecchia funzione deprecata che non ha usato affatto PCRE, ma un motore/sintassi regex differente. – BoltClock

risposta

15

preg_split() è simile a la vecchia divisione ereg-function(). Basta racchiudere l'espressione regolare in /.../ in questo modo:

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

La racchiude slash / qui sono veramente parte della sintassi delle espressioni regolari, non cercato nella stringa. Se il delimitatore www è variabile, è necessario utilizzare anche preg_quote() per la parte interna.

Tuttavia, non è necessario avere espressioni regolari se si cercano comunque stringhe statiche. In questi casi è possibile utilizzare explode() più o meno come si è utilizzato split() prima:

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

grazie per la risposta. non posso accettarlo, perché mi sta dando massaggio, che posso accettare dopo 2 minuti .. ma funziona, grazie – Basit

+0

btw isnt preg_split è più veloce poi esplodere? – Basit

+3

@Basit: non di solito. Esplodi esegue una semplice ricerca binaria e non deve cercare motivi complessi/opzionali. Inoltre è implementato come funzione PHP di base, quindi può gestire meglio le stringhe PHP e generare direttamente un array PHP. La funzione preg_split() è più lenta perché esegue un roundtrip su libPCRE. - Quindi explode() è sempre più veloce. (L'espressione regolare corrispondente a preg_match() OTOH può essere spesso più efficiente della semplice aritmetica della funzione stringa PHP.) – mario