2010-04-23 7 views
0

Désolé pour une description pas claire, mon anglais n'est pas bon.Expressions régulières en PHP

Mon problème est que je veux décoder une chaîne, et cette chaîne a un contenu imbriqué délimité par {}.
Par exemple:

La chaîne:

{any string0{any string 00{any string 000....}}}{any string1}any string. 

Le résultat que je veux:

array[0] = {any string0{any string 00{any string 000....}}} 
array[1] = {any string1} 

J'espère qu'il est assez clair.

+0

Vous ne pouvez pas le faire en utilisant des expressions régulières. – SLaks

+0

Essayez d'expliquer votre problème mieux, il est très difficile de comprendre ce que vous devez faire –

+0

essayer gentiment d'éditer votre poste. utilisez la fonction "exemple de code". Merci! – abramlimpin

Répondre

4

Faisant la meilleure utilisation de la question (curieusement, et espérons-le bientôt-être édité), ce qui suit prend votre exemple de chaîne et fournit votre exemple de tableau.

$subject = '{blah\blah{\blah\blah...{\bl....}}}{blah...}blah... '; 
$pattern = '/\{(?>[^{}]++|(?R))*\}/'; 

preg_match_all($pattern, $subject, $matches); 
print_r($matches[0]); 

qui produit:

Array 
(
    [0] => {blah\blah{\blah\blah...{\bl....}}} 
    [1] => {blah...} 
) 
+0

Cela fonctionne, vous avez sauvé ma journée, merci beaucoup. – kelly

+0

De rien je suppose. :-) – salathe

+0

MES YEUX! ÇA FAIT MAL! –