Opérations sur les variables

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Opérations sur les variables

par BFH » 06 mai 2005, 11:59

Si je mets:
if(ereg("[0-9]$",$TR)) 
{ 
$Num= " [0-9] ";
} 
echo $Num;
J'obtiens [0-9]

desolé tu as repondu le temps que j'ecrivais

Encore merci a toi! :P

par Cyrano » 06 mai 2005, 11:58

$Num = preg_replace("#\D#","",$TR)
ça va supprimer tous les caractères alphabétiques et te laisser le nombre

par BFH » 06 mai 2005, 11:46

Euh au fait j'oubliais dans tout ça: comment faire pour recuperer la valeur de nombre dans une autre variable?

J'ai essayé
if(preg_match('[:digit:]',$TR))
{
$Num= "[:digit:]";
}
Mais ça ne va pas!

par BFH » 06 mai 2005, 11:25

SI je mets '§VRAI§' dans
if(preg_match('§VRAI§',$TR)) 
ça fonctionne ](*,) j'y comprends rien a ces trucs là moi!

par BFH » 06 mai 2005, 11:18

j'obtiens pour /def/
string(5) "/def/"

Le mot "def" est conforme au masque saisi

...tableau et formulaire...
J'ai aussi regardé si les PCRE étaient actif et ils le sont!

par Cyrano » 06 mai 2005, 11:10

Sinon, modifie la ligne :
if(preg_match("#".$masque."#",$mot))
Comme ça, les délimiteurs seront mis par défaut et tu mets juste le mot dans la case "masque"

par Cyrano » 06 mai 2005, 11:08

remets le même mot dans le masque mais avec les délimiteurs de ton choix : ce que tu veux sauf des caractères alphanumériques.

par BFH » 06 mai 2005, 11:06

j'obtiens
string(longueur_du_masque) "valeur_du_masque"

Warning: Delimiter must not be alphanumeric or backslash in url on lin 28

Le mot "XXX" est invalide par rapport au masque saisi.

...tableau et formulaire...
ça veut dire quoi?

par Cyrano » 06 mai 2005, 10:53

Tiens, pour mon propre apprentissage, je me suis fait une patite page de test, je te la met telle quelle, copie, colle dans un nouveau fichier, enregistre et teste autant que tu veux mais reviens me dire si ça ne fonctionne pas chez toi :

à tout hasard, vérifie dans ton phpinfo sur ta config supporte les regex PCRE
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
?>
<!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">
<!-- Date de création: 02/05/2005 -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Masques de saisie PCRE</title>
</head>
<body>
<?php
if(isset($_POST['envoi']))
{
    $masque = $_POST['masque'];
    $mot = $_POST['mot'];
    /*
    $in1 = "#((?:https?|ftp)://\S+)(\s|\z)#";
    $in2 = "#((?:<!//)(www\.)\S+)(\s|\z)#";
    echo("<code>". $in1 ."</code><br />\n");
    echo("<code>". $in2 ."</code>\n");
    $masque = "`(((https?|ftp)://(w{3}\.)?)(?<!www)(\w+-?)*\.([a-z]{2,4}))`";
    */
    echo("<pre>");
    var_dump($masque);
    echo("</pre>\n");
    if(preg_match($masque,$mot))
    {
?>
<p>Le mot "<?php echo($mot); ?>" est conforme au masque saisi.</p>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">
  <fieldset>
  <legend>Saisissez une expression et un mot pour comparer</legend>
    <label>Le masque : <input type="text" name="masque" id="masque" value="" /></label>
    <label>Le mot : <input type="text" name="mot" id="mot" value="" /></label>
    <input type="submit" name="envoi" id="envoi" value="Soumettre" />
  </fieldset>
</form>
<?php
    }
    else
    {
?>
<p>Le mot "<?php echo($mot); ?>" est invalide par rapport au masque saisi.</p>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">
  <fieldset>
  <legend>Saisissez une expression et un mot pour comparer</legend>
    <label>Le masque : <input type="text" name="masque" id="masque" value="<?php echo($masque); ?>" /></label>
    <label>Le mot : <input type="text" name="mot" id="mot" value="<?php echo($mot); ?>" /></label>
    <input type="submit" name="envoi" id="envoi" value="Soumettre" />
  </fieldset>
</form>
<?php
    }
}
else
{
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">
  <fieldset>
  <legend>Saisissez une expression et un mot pour comparer</legend>
    <label>Le masque : <input type="text" name="masque" id="masque" value="" /></label>
    <label>Le mot : <input type="text" name="mot" id="mot" value="" /></label>
    <input type="submit" name="envoi" id="envoi" value="Soumettre" />
  </fieldset>
</form>
<?php
}
?>
</body>
</html>
Bon code :)

par BFH » 06 mai 2005, 10:50

écoute ,tu vas finir par croire que je suis un gland (c'est peut etre vrai après tout) mais chez moi les dièse, les [], les ' ', les // ça ne passe pas!

j'obtiens :
Parse error,expecting `')" in url_de_la_page on line X
:cry:

par Cyrano » 06 mai 2005, 10:40

un délimiteur, j'aurais pu mettre /VRAI/, ou bien 'VRAI' ou encore [VRAI] , j'utilise le dièse #VRAI#

par BFH » 06 mai 2005, 10:37

pardon, mais c'est quoi ton drole de sybole qui entoure VRAI dans preg_match ?

par Cyrano » 06 mai 2005, 10:24

Ben avec un truc tout bête :
if(preg_match(#VRAI#,$TR))
{
    $Booleen = "VRAI";
}
Mais je n'ai peut-être pas bien compris la question... :?:

Opérations sur les variables

par BFH » 06 mai 2005, 10:16

Bonjour, après avoir rechercher sur le forum je n'ai pas trouvé de post qui en parle...

Comment faire pour separer une valeur en deux parties, explications:
J'ai $TR=VRAI_suivi_d'un_nombre ou $TR=FAUX_suivi_d'un_nombre

Comment faire pour séparer ma variable en deux parties? Qqch du style :
$Booleen=VRAI
$Num=le_nombre


J'ai essayé avec
if( ($TR=="^VRAI") || ($TR=="%$"))
{
$Booleen="VRAI";
$Num="%";
}
Mais ça ne fonctionne pas :( Si qq pouvait m'indiquer un post sur ce sujet ou la bonne formulation ce serait cool ! D'avance Merci.