1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
genstr.php
/********************************************************/
<?php $locadr= 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; ?>
<script language="javascript" type="text/javascript">
function showhide_tot(divid){
if ( document.getElementById && document.getElementById(divid) ) {pdiv=document.getElementById(divid).style;}
else if ( document.all && document.all[divid] ) {pdiv=document.all[divid].style;}
else if ( document.layers && document.layers[divid] ) {pdiv=document.layers[divid].style;}
pdiv.visibility= (pdiv.visibility=="hidden")?"visible":"hidden";
pdiv.display=(pdiv.display=="none")?"inline":"none";}</script>
<div id="genurl" style="background-color:#595b70;">
<p><a href="javascript:showhide_tot('gnform');showhide_tot('resgen');">Gen URL</a></p>
genere chaines de caracteres
<br /><br />
<?php /*format de la chaine a generer: 3 nb et un car. pr donner un exemple*/
$gnurl="http://www.toto.fr/index.html/%1\$d%2\$d%3\$d%4\$s";
$vis="visibility:visible;display:block;";$nonvis="visibility:hidden;display:none;";
$gnform_vis=empty($_POST['gnsubmit'])?$vis:$nonvis;$gn_vis=empty($_POST['gnsubmit'])?$nonvis:$vis;
?>
<div id="gnform" style="border: 1px #ffcc00 solid;margin-left:10px;<?php echo $gnform_vis;?>">
<?php if (empty($_POST['npsubmit'])) { ?>
<form name="npform" action="<?php echo $locadr ?>" method="post" enctype="multipart/form-data">
nb de param variables dans l'expression:<input name="npar" type="text" value="4" size="1" />
<input name="npsubmit" type="submit" value="Ok" />
</form>
<?php } else { $npar=$_POST['npar']; ?>
<form name="Form3" action="<?php echo $locadr ?>" method="post" enctype="multipart/form-data">
format de la chaine<input name="gnurl" type="text" value="<?php echo $gnurl ?>" size="50" /><br />
(les numeros doivent correspondrent a l'emplacement des param. ds la chaine cf <a href="http://fr2.php.net/manual/fr/function.sprintf.php">sprintf)</a>
<br /><br />variation des parametres:<br />
<?php for ($np=1;$np<=$npar;$np++){
print "par $np : min/max <input name=\"min$np\" type=\"text\" value=\"0\" size=\"1\" />";
print "<input name=\"max$np\" type=\"text\" value=\"1\" size=\"1\" /><br />";}
?>
<br />
<input name="clear" type="reset" value="Clear" onClick="document.forms.Form3.reset()"/>
<input name="gnsubmit" type="submit" value="Ok" />
</form>
<?php } ?>
</div>
<div id="resgen" style="<?php echo $gn_vis;?>"><br />
<?php
if(!empty($_POST['gnsubmit'])){/*verif click on submit*/
if (!empty($_POST['gnurl'])){/*verif string send*/
foreach ($_POST as $k => $v) {$$k=$v;} /*cree $min1=min1, .... et $gnurl*/
}
$npar=(count($_POST)-2)/2;
for ($i=1;$i<=$npar;$i++){global ${'i'.$i};
for($ni=${'min'.$i};$ni<=${'max'.$i};$ni++){${'par'.$i}[]=$ni;}/*stock les val possibles des param*/
}
/*simulation de la fct sprintf*/
$pattern='/[%]\d[\\][$]\w/';preg_match_all($pattern,$gnurl,$matches);/*repere l'emplacement des car. de formatage*/
/*repere l'ordre de placement des param (si le 1er par. apparait en 3eme pos. etc...)*/
$ord[0]=0;for ($i=1;$i<=$npar;$i++){$ord[$i]=substr($matches[0][$i-1],1,1);}
function array_dot($t1,$t2){/*fait le produit de ts les elem de 2 tab. */
foreach ($t1 as $v1){foreach ($t2 as $v2){$t3[]=$v1.",".$v2;}}
return $t3;}
$i=1;while ($i<$npar-1){/*applique recursivement f(f(f(tab1,tab2),tab3),tab4)...*/
$j=$i+1;$k=$i+2;
global $ord;
global ${'par'.$ord[$i]},${'par'.$ord[$j]},${'par'.$ord[$k]};
if ($i==1) {$tab=array_dot(${'par'.$ord[$i]},${'par'.$ord[$j]});}
$tab=array_dot($tab,${'par'.$ord[$k]});
$i++;}
$pattern=$matches[0];
for ($i=1;$i<=count($tab)-1;$i++){
$replace=explode(',',$tab[$i]);
print "<br />".str_replace($pattern,$replace,$gnurl);}
}?>
<br /><br />cliquez sur le lien pour recommencer
</div>
<br /><br />
</div>
/*********************************************************/ |
Partager