Codage texte >html, iso, specialchars, url et decodage

Soyez le premier à donner votre avis sur cette source.

Vue 6 215 fois - Téléchargée 490 fois

Description

Ce script php permet, comme son nom l'indique de coder un texte pour remplacer les caractères spéciaux, ou apprendre à comprendre les htmlentities, specialchars, ...
J'y ai ajouté un peu de jquery, et un peu de flash, pour pouvoir réencoder le résultat, et aussi pour pouvoir mettre le résultat de l'encodage dans le presse papier.
il peut être intéressant d'encoder avec htmlentities puis de décoder avec htmlspecialchars, pour encoder les caractères spéciaux, mais conserver les balises html.
Ce code peut-être amélioré, voir optimisé, j'en suis convaincu. Je suis preneur de tout bon conseil :-)

Source / Exemple :


<?php
	// Cases cochées par défaut
	$check1 = 'checked="checked" ';
	$check2 = '';
	$check3 = '';
	$check4 = 'checked="checked" ';
	$check5 = '';
	$check6 = '';
	$check7 = 'checked="checked" ';
	$check8 = '';
	$check9 = '';
	
	if(@$_POST['lang'] == 'iso'){ // Si le language est ISO
		if(@$_POST['texte'] != ''){ // Si le texte n'est pas vide
			if(@$_POST['sens'] == 'inv'){ // Si on décode
				for ($i = 1; $i < 257; ++$i){
					$iso_tab['&#'.$i.';'] = chr($i);
				}
				$corps = '<h3>Traduction</h3>';
				$val = str_replace('&', '&amp;', $_POST['texte']);
				$corps .= '<br />';
				$corps .= '<input id="presse" type="submit" value="presse papier" />';
				$corps .= '<input id="remont" type="submit" value="^^retraduire^^" /><br />';
				$corps .= '<textarea class="resizable" name="texte2" id="texte2" cols="55" rows="12">';
				$trad = strtr($_POST['texte'], $iso_tab);
				$corps .= $trad;
				$corps .= '</textarea>';
				$corps .= '<br /><br />';
				$corps .= '<span>'.strlen($trad).' caractères</span>';
				$check1 = '';
				$check2 = '';
				$check3 = 'checked="checked" ';
				$check9 = '';
				$check4 = '';
				$check5 = 'checked="checked" ';
				$tab_conv = '';
				foreach($iso_tab as $key => $elem){ // Construction de la table de conversion qui apparaitra en dessous de la traduction
					$tab_conv .= '<span class="tab_conv"> ';
					$tab_conv .= $elem;
					$tab_conv .= ' => ';
					$tab_conv .= str_replace('&', '&amp;', $key);
					$tab_conv .= ' </span>';
				}
			}
			else{ // Si on code
				for ($i = 1; $i < 257; ++$i){
					$iso_tab[chr($i)] = '&amp;#'.$i.';';
				}
				$corps = '<h3>Traduction</h3>';
				$val = str_replace('&', '&amp;', $_POST['texte']);
				$corps .= '<br />';
				$corps .= '<input id="presse" type="submit" value="presse papier" />';
				$corps .= '<input id="remont" type="submit" value="^^retraduire^^" /><br />';
				$corps .= '<textarea class="resizable" name="texte2" id="texte2" cols="55" rows="12">';
				$trad = strtr($_POST['texte'], $iso_tab);
				$corps .= $trad;
				$corps .= '</textarea>';
				$corps .= '<br />';
				$corps .= '<span>'.strlen(str_replace('&amp;', '&', $trad)).' caractères</span>';
				$corps .= '<h3>Rendu</h3>';
				$corps .= '<textarea name="texte3" id="texte3" cols="55" rows="12">';
				$corps .= str_replace('&amp;', '&', $trad);
				$corps .= '</textarea>';
				$check1 = '';
				$check2 = '';
				$check3 = 'checked="checked" ';
				$check9 = '';
				$check4 = 'checked="checked" ';
				$check5 = '';
				$tab_conv = '';
				foreach($iso_tab as $key => $elem){ // Construction de la table de conversion qui apparaitra en dessous de la traduction
					$tab_conv .= '<span class="tab_conv"> ';
					$tab_conv .= $key;
					$tab_conv .= ' => ';
					$tab_conv .= $elem;
					$tab_conv .= ' </span>';
				}
				
			}
		}
	}
	if(@$_POST['lang'] == 'html'){ // Si le language est HTML
		if(@$_POST['texte'] != ''){ // Si le texte n'est pas vide
			if(@$_POST['tab'] == 'comp'){ // Si la table de conversion est ENT_COMPAT
				$iso_tab = get_html_translation_table(HTML_ENTITIES, ENT_COMPAT);
				$check6 = 'checked="checked" ';
				$check7 = '';
				$check8 = '';
			}
			if(@$_POST['tab'] == 'quot'){ // Si la table de conversion est ENT_QUOTES
				$iso_tab = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);
				$check6 = '';
				$check7 = 'checked="checked" ';
				$check8 = '';
			}
			if(@$_POST['tab'] == 'noquot'){ // Si la table de conversion est ENT_NOQUOTES
				$iso_tab = get_html_translation_table(HTML_ENTITIES, ENT_NOQUOTES);
				$check6 = '';
				$check7 = '';
				$check8 = 'checked="checked" ';
			}
			$tab_conv = '';
			foreach($iso_tab as $key => $elem){ // Construction de la table de conversion qui apparaitra en dessous de la traduction
				$tab_conv .= '<span class="tab_conv"> ';
				$tab_conv .= $key;
				$tab_conv .= ' => ';
				$tab_conv .= str_replace('&', '&amp;', $elem);
				$tab_conv .= ' </span>';
			}
			if(@$_POST['sens'] == 'inv'){ // Si on décode
				foreach($iso_tab as $key => $elem){
					$iso_tab2[$elem] = $key;
				}
				$corps = '<h3>Traduction</h3>';
				$val = str_replace('&', '&amp;', $_POST['texte']);
				$corps .= '<br />';
				$corps .= '<input id="presse" type="submit" value="presse papier" />';
				$corps .= '<input id="remont" type="submit" value="^^retraduire^^" /><br />';
				$corps .= '<textarea class="resizable" name="texte2" id="texte2" cols="55" rows="12">';
				$trad = strtr($_POST['texte'], $iso_tab2);
				$corps .= $trad;
				$corps .= '</textarea>';
				$corps .= '<br /><br />';
				$corps .= '<span>'.strlen($trad).' caractères</span>';
				$check1 = 'checked="checked" ';
				$check2 = '';
				$check3 = '';
				$check4 = '';
				$check5 = 'checked="checked" ';
				$check9 = '';
			}
			else{ // Si on code
				$corps = '<h3>Traduction</h3>';
				$val = str_replace('&', '&amp;', $_POST['texte']);
				$corps .= '<br />';
				$corps .= '<input id="presse" type="submit" value="presse papier" />';
				$corps .= '<input id="remont" type="submit" value="^^retraduire^^" /><br />';
				$corps .= '<textarea class="resizable" name="texte2" id="texte2" cols="55" rows="12">';
				$trad = strtr($_POST['texte'], $iso_tab);
				$trad1 = str_replace('&', '&amp;', $trad);
				$corps .= $trad1;
				$corps .= '</textarea>';
				$corps .= '<br />';
				$corps .= '<span>'.strlen(str_replace('&amp;', '&', $trad)).' caractères</span>';
				$corps .= '<h3>Rendu</h3>';
				$corps .= '<textarea name="texte3" id="texte3" cols="55" rows="12">';
				$corps .= $trad;
				$corps .= '</textarea>';
				$check1 = 'checked="checked" ';
				$check2 = '';
				$check3 = '';
				$check4 = 'checked="checked" ';
				$check5 = '';
				$check9 = '';
			}
		}
	}
	if(@$_POST['lang'] == 'htmlspecialchars'){ // Si le language est HTMLspecialchars
		if(@$_POST['texte'] != ''){ // Si le texte n'est pas vide
			if(@$_POST['sens'] == 'inv'){ // Si on décode
				$corps = '<h3>Traduction</h3>';
				$val = str_replace('&', '&amp;', $_POST['texte']);
				$corps .= '<br />';
				$corps .= '<input id="presse" type="submit" value="presse papier" />';
				$corps .= '<input id="remont" type="submit" value="^^retraduire^^" /><br />';
				$corps .= '<textarea class="resizable" name="texte2" id="texte2" cols="55" rows="12">';
				$trad = htmlspecialchars_decode($_POST['texte']);
				$trad1 = str_replace('&', '&amp;', $trad);
				$corps .= $trad1;
				$corps .= '</textarea>';
				$corps .= '<br /><br />';
				$corps .= '<span>'.strlen(str_replace('&amp;', '&', $trad)).' caractères</span>';
				$check1 = '';
				$check2 = '';
				$check3 = '';
				$check4 = '';
				$check5 = 'checked="checked" ';
				$check9 = 'checked="checked" ';
			}
			else{ // Si on code
				$corps = '<h3>Traduction</h3>';
				$val = str_replace('&', '&amp;', $_POST['texte']);
				$corps .= '<br />';
				$corps .= '<input id="presse" type="submit" value="presse papier" />';
				$corps .= '<input id="remont" type="submit" value="^^retraduire^^" /><br />';
				$corps .= '<textarea class="resizable" name="texte2" id="texte2" cols="55" rows="12">';
				$trad = htmlspecialchars($_POST['texte']);
				$trad1 = str_replace('&', '&amp;', $trad);
				$corps .= $trad1;
				$corps .= '</textarea>';
				$corps .= '<br />';
				$corps .= '<span>'.strlen(str_replace('&amp;', '&', $trad)).' caractères</span>';
				$corps .= '<h3>Rendu</h3>';
				$corps .= '<textarea name="texte3" id="texte3" cols="55" rows="12">';
				$corps .= $trad;
				$corps .= '</textarea>';
				$check1 = '';
				$check2 = '';
				$check3 = '';
				$check4 = 'checked="checked" ';
				$check5 = '';
				$check9 = 'checked="checked" ';
			}
		}
	}
	if(@$_POST['lang'] == 'url'){ // Si le language est URL
		if(@$_POST['texte'] != ''){ // Si le texte n'est pas vide
			if(@$_POST['sens'] == 'inv'){ // Si on décode
				$corps = '<h3>Traduction</h3>';
				$val = $_POST['texte'];
				$corps .= '<br />';
				$corps .= '<input id="presse" type="submit" value="presse papier" />';
				$corps .= '<input id="remont" type="submit" value="^^retraduire^^" /><br />';
				$corps .= '<textarea class="resizable" name="texte2" id="texte2" cols="55" rows="12">';
				$trad = urldecode($_POST['texte']);
				$corps .= $trad;
				$corps .= '</textarea>';
				$corps .= '<br /><br />';
				$corps .= '<span>'.strlen($trad).' caractères</span>';
				$check1 = '';
				$check2 = 'checked="checked" ';
				$check3 = '';
				$check9 = '';
				$check5 = 'checked="checked" ';
				$check4 = '';
			}
			else{ // Si on code
				$corps = '<h3>Traduction</h3>';
				$val = $_POST['texte'];
				$corps .= '<br />';
				$corps .= '<input id="presse" type="submit" value="presse papier" />';
				$corps .= '<input id="remont" type="submit" value="^^retraduire^^" /><br />';
				$corps .= '<textarea name="texte2" id="texte2" cols="55" rows="12">';
				$trad = urlencode($_POST['texte']);
				$corps .= $trad;
				$corps .= '</textarea>';
				$corps .= '<br /><br />';
				$corps .= '<span>'.strlen($trad).' caractères</span>';
				$check1 = '';
				$check2 = 'checked="checked" ';
				$check3 = '';
				$check9 = '';
				$check4 = 'checked="checked" ';
				$check5 = '';
			}
		}
	}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
	<head>
		<title>Convertisseur PHP</title>
		<script type="text/javascript" src="jquery/jquery-1.4.4.js"></script>
		<script type="text/javascript" src="zeroclipboard/ZeroClipboard.js"></script>
		<script type="text/javascript" src="jquery/trad.js"></script>
		<style>

  • {-webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; border-color: blue;}
body{text-align: center; background: black; color: blue;} #corps{width: 950px; margin: auto;} #texte{border: 2px inset blue; background: black; color: blue;} #texte2{background: #242424; color: #adadff;} span{color: gold; padding: 1px 2px; margin: 1px;} .tab_conv{border: 1px solid; margin: 2px; display: block; float: left;} table{margin: auto; border: 1px dotted gold;} tr{vertical-align: top;} td{margin: 1px; border: 1px solid gold; padding: 0px;} label{display: block;} label:hover{background: #8181ff;} #formul div, #corps>div{margin: 1px auto !important;} </style> </head> <body> <div id="corps"> <h1>Convertisseur PHP</h1> <h3>Texte à traduire</h3> <form method="post" action=""> <div id="formul"> <textarea name="texte" id="texte" cols="55" rows="12"><?php echo @$val; ?></textarea> <br /><br /> <table><tr> <td><label for="html"><input type="radio" name="lang" value="html" id="html" <?php echo $check1; ?>/> html</label></td> <td><label for="htmlspecialchars"><input type="radio" name="lang" value="htmlspecialchars" id="htmlspecialchars" <?php echo $check9; ?>/> htmlspecialchars</label></td> <td><label for="url"><input type="radio" name="lang" value="url" id="url" <?php echo $check2; ?>/> url</label></td> <td><label for="iso"><input type="radio" name="lang" value="iso" id="iso" <?php echo $check3; ?>/> iso</label></td> </tr><tr> <td><label for="comp"><input type="radio" name="tab" value="comp" id="comp" <?php echo $check6; ?>/> ENT_COMPAT</label> <label for="quot"><input type="radio" name="tab" value="quot" id="quot" <?php echo $check7; ?>/> ENT_QUOTES</label> <label for="noquot"><input type="radio" name="tab" value="noquot" id="noquot" <?php echo $check8; ?>/> ENT_NOQUOTES</label></td> <td></td> <td></td> <td></td> </tr><tr> <td colspan="4" > <label for="norm"><input type="radio" name="sens" value="norm" id="norm" <?php echo $check4; ?>/> norm</label> <label for="inv"><input type="radio" name="sens" value="inv" id="inv" <?php echo $check5; ?>/> inv</label></td> </tr></table><br /> <input type="submit" value="traduire" /> </div> </form> <?php echo @$corps; ?> <br /> <a href="table_carac.php">Les tables de caractères</a> <br /> <?php echo @$tab_conv; ?> </div> </body> </html>

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

Messages postés
3
Date d'inscription
mardi 5 juillet 2011
Statut
Membre
Dernière intervention
12 mars 2012

Bonjour Salva9473,
Je suis un peu étonné que ton script n'ai pas encore de commentaires (en bien) car depuis longtemps je cherchais à faire cela et je m'étais rabattu sur une manipulation de fichier en console à l'aide de SED. Suite à des soucis de plugins sous WordPress que j'ai dû réduire au strict minimum, l'insertion de codes non exécutés en html/php me posait problème. Et je suis tombé sur cette page :)
Je n'ai pas encore rencontré de soucis avec ton script et je te félicite du travaille effectué.
Dans le cadre de mon blog : http://route63.free.fr/blog je propose, entre-autre, des tutoriaux et je souhaitais savoir sous quelle licence est ce script et dans quelle mesure je peux le proposer en consultation/usage ?
Merci par avance et bonne continuation.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.