Problème exclusion chaine REGEX:

empty
Problème exclusion chaine REGEX:

Tout d'abord bonjour tout le monde, je vais vous exposer le plus clairement possible mon problème,

j'ai créé un générateur xml qui permettra par simple balise comme les BBcode dans un forum à générer un fichier xml.

par exemple quand on tape [PSEUDO] ça affiche urldecode($model->pseudo)

Le générateur fonctionne pour l'aperçu donc les conversions se font bien mais après je veux lui afficher le code source donc avant chaque remplacement j'ajoute la variable $result_str []=

Ce qui donne $result_str []= urldecode($model->status);

Maintenant quand les personnes ecrivent leurs propres mots je n'arrivais pas à ajouter le $result_str []= avant...

J'ai donc créé une REGEX comme ceci :
$replace2 = preg_replace('#[^(\[[:upper:]\])|\n\r/]+#','$result_str []= \'' . "$0" . '\';' . "\n",$string);

Cela fonctionne très bien sauf si j'écrit un mot en majuscule car si j'ai bien compris l'exlusion ^ exclus soit [ soit A-Z soit ] et j'aimerai qu'il exclus [ et A-Z et ].

Comment puis-je m'y prendre ?

Merci d'avance pour votre aide.

empty
Voici mon code php après avoir envoyé le formulaire

<?php
		if($_POST)
		{
			$result_str []= "<hr><h2>Aperçu</h2>";
			$result_str []= '<div id="content">';
			foreach($simple_xml as $model)
			{
				$result_str []= '<div id="model">';
				
				$string = $_POST['content'];
				$expression = array(
				'[IMG]',
				'[PSEUDO]',
				'[PAIEMENT]',
				'[/PAIEMENT]',
				'[INFOS]',
				'[/INFOS]',
				'[SEXE]',
				'[LANGUES]',
				'[STATUT]',
				);
				$replacement = array(
				'<img src="' . urldecode($model->url_pic) . '" />',
				urldecode($model->pseudo),
				'<a href="' . urldecode($model->url_popup_paiement) . '" target="_blank" title="me voir">',
				'</a>',
				'<a href="' . urldecode($model->url_popup_info) . '" target="_blank" title="voir mon profil">',
				'</a>',
				urldecode($model->sex),
				urldecode($model->langs),
				urldecode($model->status),
				'$0'
				);
				$replacement2 = array(
				'$result_str []= \'<img src="\' . urldecode($model->url_pic) . \'" />\';' . "\n",
				'$result_str []= urldecode($model->pseudo);' . "\n",
				'$result_str []= \'<a href="\' . urldecode($model->url_popup_paiement) . \'" target="_blank" title="me voir">\';' . "\n",
				'$result_str []= \'</a>\';' . "\n",
				'$result_str []= \'<a href="\' . urldecode($model->url_popup_info) . \'" target="_blank" title="voir mon profil">\';' . "\n",
				'$result_str []= \'</a>\'' . "\n",
				'$result_str []= urldecode($model->sex);' . "\n",
				'$result_str []= urldecode($model->langs);' . "\n",
				'$result_str []= urldecode($model->status);' . "\n",
				);
				$count = count($expression);
				
				$replace2 = preg_replace('#[^(\[[:upper:]\])|\n\r/]+#','$result_str []= \'' . "$0" . '\';' . "\n",$string);
				
				for($i = 1; $i < $count; $i++)
				{
					$replace = str_replace($expression, $replacement, $string);

					//$replace2 = preg_replace('#[^(?!A-Z)][^\n\r]+#','$result_str []= \'' . "$0" . '\';' . "\n",$string);
					$replace2 = str_replace($expression, $replacement2, $replace2);
				}

				$result_str []= nl2br($replace);
				$code_str []= '<h2>Code source</h2>';
				$code_str []= '<textarea onlyread  cols="150" rows="20">';
				$code_str []= 'foreach($simple_xml as $model){' . "\n";
				$code_str []= $replace2;
				$code_str []= '}';
				$code_str []= '</textarea>';
				$code_str []= '</div>';
				
				break;
			}
			$result_str []= '</div>';
				
			echo implode("\n", $result_str);
			echo '<hr>';
			echo implode("\n", $code_str);
			
			//echo show_source("index.php");
		}
	?>
gauthier

bonjour,

c'est avec plaisir que je te viendrais en aide sur cet épineux problème d'expression régulière (j'adore ça ;)), mais là je dois avouer que je ne comprends pas exactement où tu veux en venir..

Peux-tu me donner :

1) un exemple d'input (contenu de $string)
2) le résultat que tu obtiens aujourd'hui
3) le résultat que tu voudrais obtenir

Avec ça, je devrais pouvoir régler ton problème ;)