Page 1 sur 1
Opérations sur les variables
Posté : 06 mai 2005, 10:16
par BFH
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.
Posté : 06 mai 2005, 10:24
par Cyrano
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...

Posté : 06 mai 2005, 10:37
par BFH
pardon, mais c'est quoi ton drole de sybole qui entoure VRAI dans preg_match ?
Posté : 06 mai 2005, 10:40
par Cyrano
un délimiteur, j'aurais pu mettre /VRAI/, ou bien 'VRAI' ou encore [VRAI] , j'utilise le dièse #VRAI#
Posté : 06 mai 2005, 10:50
par BFH
é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

Posté : 06 mai 2005, 10:53
par Cyrano
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

Posté : 06 mai 2005, 11:06
par BFH
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?
Posté : 06 mai 2005, 11:08
par Cyrano
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.
Posté : 06 mai 2005, 11:10
par Cyrano
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"
Posté : 06 mai 2005, 11:18
par BFH
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!
Posté : 06 mai 2005, 11:25
par BFH
SI je mets '§VRAI§' dans
if(preg_match('§VRAI§',$TR))
ça fonctionne ](*,) j'y comprends rien a ces trucs là moi!
Posté : 06 mai 2005, 11:46
par BFH
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!
Posté : 06 mai 2005, 11:58
par Cyrano
$Num = preg_replace("#\D#","",$TR)
ça va supprimer tous les caractères alphabétiques et te laisser le nombre
Posté : 06 mai 2005, 11:59
par BFH
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!
