<?php
/**
* @file decoder_charset_inconnu.php.php
* @brief Page qui sert à détecter les caractères de formatage dans une chaîne pour fprintf.
*
* @author hughes monget
* @see http://monget.com/
*/
define('STR_TEXTE', 'texte');
define('STR_ACTION', 'action');
define('REGEXP_FORMAT', '/%[ \d+hlL*#.-]*[diouxXfeEgGcsp%]/U');
$bool_action = isset($_REQUEST[STR_ACTION]) && isset($_REQUEST[STR_TEXTE]) && is_scalar($_REQUEST[STR_ACTION]);
$str_texte = '%d %0.2d %% %f %s
[%10s] [%-10s] [%010s] [%\'#10s] [%10.10s]
%toto
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
$formatted = sprintf("%01.2f", $money);
echo sprintf("%.3e", $number);';
if ($bool_action)
{
$str_texte = $_REQUEST[STR_TEXTE];
if (get_magic_quotes_gpc())
{
$str_texte = stripslashes($str_texte);
}
$str_texte = htmlspecialchars($str_texte);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>détecter un % dans une chaîne pour printf</title>
<style type="text/css">
<!--
body *
{
font-family: monospace;
font-size: 8pt;
}
textarea
{
height: 200px;
width: 600px;
}
input.submit
{
width: 100px;
display: block;
}
input#<?php print STR_WRAP; ?>
{
width: 50px;
}
.outline
{
background: #FF0; }
-->
</style>
<script type="text/javascript">
<!--;
function on_load()
{
if (document && document.getElementById)
{
var obj_pattern = document.getElementById('<?php print STR_MAIL; ?>');
if (obj_pattern && obj_pattern.focus)
{
obj_pattern.focus();
}
}
}
//-->
</script>
</head>
<body onload="on_load();">
<form method="post">
<input type="hidden" name="<?php echo STR_ACTION; ?>" value="<?php echo STR_ACTION; ?>" />
<textarea id="<?php print STR_TEXTE; ?>" name="<?php print STR_TEXTE; ?>"><?php print $str_texte; ?></textarea>
<input type="submit" class="submit" value="détecter" />
</form>
<?php
if ($bool_action)
{
// Cf syntaxe: http://membres.multimania.fr/dancel/c/c60_10.htm
$arr_str_pourcent = array();
if (preg_match_all(REGEXP_FORMAT, $str_texte, $arr_arr_str_match))
{
$arr_str_pourcent = $arr_arr_str_match[0];
//natcasesort($arr_str_pourcent);
}
if (!$arr_str_pourcent)
{
echo 'Aucune % trouvé.';
}
else
{
echo '<pre>';
echo implode(" ", $arr_str_pourcent);
echo '</pre>';
}
echo '<hr /><pre>'.preg_replace(REGEXP_FORMAT, '<span class="outline">\0</span>', $str_texte).'</pre>';
}
echo '<hr />';
highlight_file(__FILE__);
?>
</body>
</html>