2010-09-23 12 views
0

Je voudrais diviser une chaîne par un tableau de délimiteurs, et également obtenir des informations sur le délimiteur.Séparer une chaîne et obtenir un délimiteur en retour ainsi

Exemple:
$mystring = 'test+string|and|hello+word';
$result = preg_split('/\+,|/+', $mystring);

Je voudrais un tableau en retour avec quelque chose comme ça:
$return[0] = array('test','+');
$return[1] = array('string','|');

thnx à l'avance

Répondre

3

Prenez une l ook à l'option PREG_SPLIT_DELIM_CAPTURE pour preg_split()

EDIT

Exemple:

$mystring = 'test+string|and|hello+word'; 
$result = preg_split('/([\+|,])/', $mystring, null, PREG_SPLIT_DELIM_CAPTURE); 
+0

thnx Mark (pour la réponse et la réponse rapide)! – Bokw

0

Je ne savais pas PREG_SPLIT_DELIM_CAPTURE avant d'écrire ma réponse. Il est sans aucun doute la plus claire que l'utilisation preg_match_all:

<?php 
$s = 'a|b|c,d+e|f,g'; 
if (preg_match_all('/([^+,|]+)([+,|])*/', $s, $matches)) { 
    for ($i = 0; $i < count($matches[0]); $i++) { 
    echo("got '{$matches[1][$i]}' via delimiter '{$matches[2][$i]}'\n"); 
    } 
}