2010-07-03 6 views
0

Bonjour, Je suis en train de faire ce qui suit:preg_replace question

Dire que j'ai une chaîne d'entrée comme celui-ci

{stackoverflow is a {cool|great} website|stackoverflow is the {best|greatest}}. {stackoverflow is for {cool|great} coders|stackoverflow is the {best|greatest} site for coders} 

Comment puis-je convertir au format suivant en utilisant PHP

{stackoverflow is a [cool|great] website~stackoverflow is the [best|greatest]}. {stackoverflow is for [cool|great] coders~stackoverflow is the [best|greatest] site for coders} 

Je joue avec preg_replace mais je ne trouve pas de solution de travail. Pour résumer les choses: L'élément imbriqué {doit être transformé en [.

Et le | sur le premier niveau devrait se transformer en ~.

Des idées?

Cordialement

+0

Est-ce devoir? Qu'avez-vous jusqu'ici? –

+1

Y a-t-il un schéma général que vous avez en tête? Votre exemple est très spécifique. – casablanca

+0

Eh bien mon problème principal est l'imbrication. Si je pouvais obtenir un tableau ou avec stackoverflow est un site web {cool | great} et stackoverflow est le {best | le plus grand} en tant que valeurs, il serait assez facile de résoudre le reste. – brechtvhb

Répondre

0

pas besoin de preg_replace;)

$value = '{stackoverflow is a {cool|great} website|stackoverflow is the {best|greatest}}'; 
$map = array('{' => '[', '}' => ']', '~' => '|'); 
$value = '{' . str_replace(array_keys($map), array_values($map), substr($value, 1, -1)) . '}'; 
+0

Le 'trim' supprime trop de'} 'à la fin de la chaîne. – salathe

+0

Cela ne semble pas fonctionner ... a fait un écho sur la valeur de $, et cracher ce: {stackoverflow est un [cool | grand] site | stackoverflow est le [meilleur | plus} – xil3

+0

ce n'est pas vraiment travailler; (. – brechtvhb