Opérations sur les variables

BFH
Eléphant du PHP | 214 Messages

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.
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

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... :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

BFH
Eléphant du PHP | 214 Messages

06 mai 2005, 10:37

pardon, mais c'est quoi ton drole de sybole qui entoure VRAI dans preg_match ?
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

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#
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

BFH
Eléphant du PHP | 214 Messages

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:
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

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 :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

BFH
Eléphant du PHP | 214 Messages

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?
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 19672 Messages

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"
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

BFH
Eléphant du PHP | 214 Messages

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!
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

BFH
Eléphant du PHP | 214 Messages

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!
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

BFH
Eléphant du PHP | 214 Messages

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!
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

06 mai 2005, 11:58

$Num = preg_replace("#\D#","",$TR)
ça va supprimer tous les caractères alphabétiques et te laisser le nombre
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

BFH
Eléphant du PHP | 214 Messages

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
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...