Comprendre/Aide pour un script

Fermé
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 3 mars 2012 à 16:56
doctormad Messages postés 430 Date d'inscription mercredi 28 novembre 2007 Statut Membre Dernière intervention 2 avril 2015 - 3 mars 2012 à 19:12
Bonjour,
Je suis en train de réaliser un formulaire ayant un textarea. Sur ce http://editionsgracianne.free.fr/Agenda/Formulaire.php (Login= test, Pass=toto) tout fonctionne à merveille. Vous pouvez tester sans scrupules (la proprio ne l'utilise plus). Vous pouvez vérifier que la preview fonctionne ainsi que l'écriture dans la table (voir http://editionsgracianne.free.fr/Agenda/Liste_Agenda.php

J'ai donc repris le principe pour celui-ci http://saucede.free.fr/index.php?page=Ajout_Sortie&lang=Fr (Login=test, Pass=toto64). Là, la preview ne fonctionne plus bien que les balises s'insèrent dans le textarea. J'ai plusieurs Pb alors nous allons commencer par un. Celui de la preview donc.
Voici un extrait de code que je souhaiterai que vous me corrigiez (avec commentaires si possible afin de comprendre l'origine de ce problème:Le fichier View.php:
function parseZCode($content) {
	// Parsage des balises
	$zcode = array(  
		''<p>(.+)</p>'isU',            // paragraphe 
		''<strong>(.+)</strong>'isU',  // texte gras
		''<em>(.+)</em>'isU',          // texte italique 
		''<u>(.+)</u>'isU',            // texte souligné
		''<s>(.+)</s>'isU',            // texte barré
//		''<br>(.+)</br>'isU',          // retour à la ligne
		''<lien>(.+)</lien>'isU',      // intitulé du lien 
		''<lien url=&quot;(.+)&quot;>(.+)</lien>'isU', // url du lien 
		''<image>(.+)</image>'isU',    // On n'utilise pas d'image ici
		''<citation>(.+)</citation>'isU',  // Citation
		''<citation nom=&quot;(.+)&quot;>(.+)</citation>'isU',  // Auteur de la citation
		''<citation lien=&quot;(.+)&quot;>(.+)</citation>'isU',  // lien de la citation
		''<taille valeur=&quot;(.+)&quot;>(.+)</taille>'isU'    // taille du/es mot/s selectionné/s 
		''<couleur valeur=&quot;(.+)&quot;>(.+)</couleur>'isU'    // taille du/es mot/s selectionné/s 
	);  
	
	$html = array(  
		'<p>$1</p>',             // paragraphe
		'<strong>$1</strong>',   // texte gras
		'<em>$1</em>',           // texte italique
		'<u>$1</u>',             // texte souligné
		'<s>$1</s>',             // texte barré
//		'<br>$1</br>',           // retour à la ligne
		'<a href="$1">$1</a>',   // intitulé du lien
		'<a href="$1">$2</a>',   // url du lien
		'<img src="$1" alt="Image utilisateur" />', // On n'utilise pas d'image ici
		'<br /><span>citation</span><div>$1</div>', // citation
		'<br /><span>citation : $1</span><div>$2</div>',  // Auteur de la citation
		'<br /><span><a href="$1">citation</a></span><div>$2</div>',  // lien de la citation
		'<span class="$1">$2</span>'
	); 

Le fichier Zcode.js:
function preview(CommentId, previewDiv) {
	var field = CommentId.value; // Le contenu du textarea est dans la variable field.
	// On vérifie avec le if() si la case à cocher est cochée, et s'il y a quelque chose dans le textarea.
	if (document.getElementById('previsualisation').checked && field) {
		
		field = field.replace(/&/g, '&amp;');
		field = field.replace(/</g, '<').replace(/>/g, '>');
		field = field.replace(/\n/g, '<br />').replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
		field = field.replace(/\n/g, '€').replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');

		field = field.replace(/<p>([\s\S]*?)<\/p>/g, '<p>$1</p>');
		field = field.replace(/<strong>([\s\S]*?)<\/strong>/g, '<strong>$1</strong>');
		field = field.replace(/<em>([\s\S]*?)<\/em>/g, '<em>$1</em>');
		field = field.replace(/<u>([\s\S]*?)<\/u>/g, '<u>$1</u>');
		field = field.replace(/<s>([\s\S]*?)<\/s>/g, '<s>$1</s>');
		field = field.replace(/<lien>([\s\S]*?)<\/lien>/g, '<a href="$1">$1</a>');
		field = field.replace(/<lien url="([\s\S]*?)">([\s\S]*?)<\/lien>/g, '<a href="$1" title="$2">$2</a>');
		field = field.replace(/<image>([\s\S]*?)<\/image>/g, '<img src="$1" alt="Image" />');
		field = field.replace(/<citation nom=\"(.*?)\">([\s\S]*?)<\/citation>/g, 'Citation : $1');
		field = field.replace(/<citation lien=\"(.*?)\">([\s\S]*?)<\/citation>/g, '<a href="$1">Citation</a> $2');
		field = field.replace(/<citation nom=\"(.*?)\" lien=\"(.*?)\">([\s\S]*?)<\/citation>/g, '<a href="$2">Citation : $1</a> $3');
		field = field.replace(/<citation lien=\"(.*?)\" nom=\"(.*?)\">([\s\S]*?)<\/citation>/g, '<a href="$1">Citation : $2</a> $3');
		field = field.replace(/<citation>([\s\S]*?)<\/citation>/g, 'Citation $1');
		field = field.replace(/<taille valeur=\"(.*?)\">([\s\S]*?)<\/taille>/g, '<span class="$1">$2</span>');
		field = field.replace(/<couleur valeur=\"(.*?)\">([\s\S]*?)<\/couleur>/g, '<span class="$1">$2</span>');
		
		//Quand toutes les conversions sont faites, on écrit la valeur de field dans le div qui sert à la prévisualisation à l'aide d'innerHTML.
		document.getElementById(previewDiv).innerHTML = field;
	}
}


J'espère que je n'ai pas été trop long ou trop brouillon dans mes explications. Je suis vraiment désolé de mettre autant de code mais c'était un minimum afin que vous compreniez ce qui se passe. Merci beaucoup d'avoir lu jusqu'au bout.


A voir également:

1 réponse

doctormad Messages postés 430 Date d'inscription mercredi 28 novembre 2007 Statut Membre Dernière intervention 2 avril 2015 99
3 mars 2012 à 19:12
Salut,

Bon déjà je pense qu'il vaut mieux ne pas réinventer la roue et utiliser des outils de type WYSIWYG comme ckeditor.

Sinon pour du PHP : ''<p>(.+)</p>'isU' n'est pas une donnée valide, tout éditeur PHP correct mettra en surbrillance les erreurs.
0