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

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

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.