Emploi de strstr + else
17 messages
• Page 1 sur 2 • 1, 2
- dudo
- WRInaute occasionnel

- Messages: 456
- Inscription: 10 Jan 2004
Emploi de strstr + else
Bonjour,
j'ai une petite question sur l'emploi de strstr,
je ne comprends pas pourquoi mon écriture ligne 2
ne fonctionne pas alors que c'est parfait en ligne 1 ?
merci ludo
j'ai une petite question sur l'emploi de strstr,
je ne comprends pas pourquoi mon écriture ligne 2
ne fonctionne pas alors que c'est parfait en ligne 1 ?
- Code: Tout sélectionner
/1/ OK
if($productUrl[5] == strstr($productUrl[5],'18975')) { $note="(vert)";}
else { $note="(rouge)";}
/2/ Ne fonctionne pas
if($productUrl[5] == strstr($productUrl[5],'18975')) { $note="(vert)";}
elseif ($productUrl[5] == strstr($productUrl[5],'99079')) { $note="(rouge)";}
else { $note="";}
merci ludo
-

Dr DLP - WRInaute impliqué

- Messages: 673
- Inscription: 28 Juin 2003
Re: Emploi de strstr + else
Dépend ce que tu entends par "ne marche pas".
Je ne comprends pas du tout ton code surtout, je ne vois pas de condition dans laquelle
peut être vraie en dehors de
Si tu pouvais dire ce que tu cherches à faire
Je ne comprends pas du tout ton code surtout, je ne vois pas de condition dans laquelle
- Code: Tout sélectionner
$productUrl[5] == strstr($productUrl[5],'18975')
peut être vraie en dehors de
- Code: Tout sélectionner
$productUrl[5] == '18975'
Si tu pouvais dire ce que tu cherches à faire
- dudo
- WRInaute occasionnel

- Messages: 456
- Inscription: 10 Jan 2004
Re: Emploi de strstr + else
Dr DLP a écrit:Dépend ce que tu entends par "ne marche pas".
Je ne comprends pas du tout ton code surtout, je ne vois pas de condition dans laquelle
- Code: Tout sélectionner
$productUrl[5] == strstr($productUrl[5],'18975')
peut être vraie en dehors de
- Code: Tout sélectionner
$productUrl[5] == '18975'
Si tu pouvais dire ce que tu cherches à faire
Je vérifie la présence ou non de 18975 au sein de la chaine $productUrl[5] s'il le trouve
affichage de $note corespondant, et ainsi de suite s'il trouve le chiffre suivant affichage du note correspondant,
puis si il ne trouve rien on affiche une variable $note vide
et c'est tout,
-

bilos - WRInaute impliqué

- Messages: 946
- Inscription: 11 Oct 2005
Re: Emploi de strstr + else
Un peu curieux comme DR DLP 
@dudo d'après ton code là où tu mentionne OK,
$note ne prend que rouge !
il parait que $productUrl[5] est l'url d'un produit ! Une url ne peut jamais contenir uniquement "18975" !
Donc la condition d'égalité est toujours fausse
@dudo d'après ton code là où tu mentionne OK,
$note ne prend que rouge !
il parait que $productUrl[5] est l'url d'un produit ! Une url ne peut jamais contenir uniquement "18975" !
Donc la condition d'égalité est toujours fausse
-

bilos - WRInaute impliqué

- Messages: 946
- Inscription: 11 Oct 2005
Re: Emploi de strstr + else
Désolé j'ai pas lu ta nouvelle réponse ! il faut que tu change ton code 
- Code: Tout sélectionner
if (preg_match("/18975/", $productUrl[5]){ $note="vert";} ...
-

Dr DLP - WRInaute impliqué

- Messages: 673
- Inscription: 28 Juin 2003
Re: Emploi de strstr + else
Juste parce que j'aime être contrariant:
sera plus rapide
Ah oui, si tu analyses plusieurs résultats possibles, passe par un tableau pour éviter des conditions en boucle
- Code: Tout sélectionner
if (strpos($productUrl[5], '18975')){ $note="vert";}
sera plus rapide
Ah oui, si tu analyses plusieurs résultats possibles, passe par un tableau pour éviter des conditions en boucle
- dudo
- WRInaute occasionnel

- Messages: 456
- Inscription: 10 Jan 2004
Re: Emploi de strstr + else
bilos a écrit:Désolé j'ai pas lu ta nouvelle réponse ! il faut que tu change ton code
- Code: Tout sélectionner
if (preg_match("/18975/", $productUrl[5]){ $note="vert";} ...
Merci !
bon, avec preg_match ce n'est pas pire, pas mieux c'est à dire ok avec
if (preg_match("18975", $productUrl[5])) { $note="(vert)";} else { $note="(rouge)";}
mais inoperant sur
if (preg_match("18975", $productUrl[5])) { $note="(vert)";} elseif (preg_match("99079", $productUrl[5])) { $note="(rouge)";}
{ $note="(Nuitée/par personne)";}
- dudo
- WRInaute occasionnel

- Messages: 456
- Inscription: 10 Jan 2004
Re: Emploi de strstr + else
bilos a écrit:T'as raison Dr DLPHabitué par pregmatch pour plusieurs mots clés ...
Voilou, donc juste pour info, ni preg_match ou strposs ne fonctionne ce qui est bizarre, y compris dans le
second cas que je vous précise, j'ai repris mon code et recherchez le début d'une url et c'est ok,
if($productUrl[5] == strstr($productUrl[5],'http://www.tintin.com')) { $note="(vert)";}
elseif($productUrl[5] == strstr($productUrl[5],'http://www.kiki.com')) { $note="(rouge)";}
-

anemone-clown - WRInaute passionné

- Messages: 1277
- Inscription: 11 Nov 2007
Re: Emploi de strstr + else
Qu'est-ce qui marche et qu'est-ce qui ne fonctionne pas??? Quel test?
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
Re: Emploi de strstr + else
Ton test ($toto == strstr($toto,'xxx')) n'est vrai que si $toto commence par xxx. Je ne pense pas du tout que ce soit ce que tu veux. Utilise effectivement strpos ou preg_match comme suggéré. Si ça ne fonctionne pas, c'est probablement que les variables que tu testes ne contiennent pas ce que tu penses.
Jacques.
Jacques.
- dudo
- WRInaute occasionnel

- Messages: 456
- Inscription: 10 Jan 2004
Re: Emploi de strstr + else
jcaron a écrit:Ton test ($toto == strstr($toto,'xxx')) n'est vrai que si $toto commence par xxx. Je ne pense pas du tout que ce soit ce que tu veux. Utilise effectivement strpos ou preg_match comme suggéré. Si ça ne fonctionne pas, c'est probablement que les variables que tu testes ne contiennent pas ce que tu penses.
Jacques.
Je ne conteste pas l'utilisation de strpos ou preg_match comme suggéré, je dis que le 1er code
est viable dans ce cadre précis d'utilisation, que le contenu des variables est bien sûr vérifié et que je n'ai pas encore
trouvé pourquoi strpos ou preg_match ne fonctionne pas dans ce cadre, avec ci-dessous un code très proche
du code réel.
- Code: Tout sélectionner
<?
$productUrl[5]='http://www.tintin.com/fr/coco';
if($productUrl[5] == strstr($productUrl[5],'http://www.tintin.com')) { $note="(vert)";}
elseif($productUrl[5] == strstr($productUrl[5],'http://www.kiki.com')) { $note="(rouge)";}
echo $note;
if (strpos($productUrl[5],'http://www.tintin.com')) { $note="(vert)";}
elseif (strpos($productUrl[5],'http://www.kiki.com')) { $note="(rouge)";}
echo $note;
?>
-

bilos - WRInaute impliqué

- Messages: 946
- Inscription: 11 Oct 2005
Re: Emploi de strstr + else
De retour au hackaton 
@dudo peux-tu nous envoyer le format de la chaine que $productUrl[5] est censé contenir !
et avant de poster ta réponse fais un print_r($productUrl[5]);
Dans la suite je vais supposer que $productUrl[5] est de la forme : "ht*tp://tonsite.com/tapage-1555.html "
Voilà ce que tu dois faire :
Sinon si tes adresses ne contiennent qu'un seul numéro tu peux simplement remplacer le Regex par :
@dudo peux-tu nous envoyer le format de la chaine que $productUrl[5] est censé contenir !
et avant de poster ta réponse fais un print_r($productUrl[5]);
Dans la suite je vais supposer que $productUrl[5] est de la forme : "ht*tp://tonsite.com/tapage-1555.html "
Voilà ce que tu dois faire :
- Code: Tout sélectionner
preg_match('/([0-9]+)\.html/', $productUrl, $val);
$n = $val[1];
switch ($n) {
case "18975":
$note = "vert";
break;
case "99079":
$note = "rouge";
break;
default:
$note = "(Nuitée/par personne)";
}
Sinon si tes adresses ne contiennent qu'un seul numéro tu peux simplement remplacer le Regex par :
- Code: Tout sélectionner
preg_match('{(\d+)}', $productUrl, $val);
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
Re: Emploi de strstr + else
Ton test avec strpos ne fonctionne pas parce que la chaîne que tu cherches est au début de la chaîne que tu examines, donc strpos renvoie 0. Il faut donc utiliser === false pour tester si ça n'y est pas (ou === 0 pour vérifier que la chaîne recherchée est bien au début).
Perso, j'utiliserais un preg_match ancré (avec un ^ au début de la regex). Evidemment il faut faire attention à escaper les caractères spéciaux (en particulier le . et éventuellement le / si tu l'utilises comme délimiteur).
Jacques.
Perso, j'utiliserais un preg_match ancré (avec un ^ au début de la regex). Evidemment il faut faire attention à escaper les caractères spéciaux (en particulier le . et éventuellement le / si tu l'utilises comme délimiteur).
Jacques.
-

Titan - Nouveau WRInaute

- Messages: 28
- Inscription: 7 Avr 2004
Re: Emploi de strstr + else
C'est réécrit avec Apache ? pourquoi ne pas tout simplement faire un $_GET['productId'] ? ou bien si réécriture utiliser un séparateur type '-' ou ',' dans l'url, et prendre la fin de la chaîne comme identifiant numérique du produit ?
parce que là ça a l'air un peu aléatoire comme résultat...
parce que là ça a l'air un peu aléatoire comme résultat...
17 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Suggestions de requêtes dans Google News - 29-04-2006
- Offre d'emploi Référenceur CDI dans le Rhône - Juin 2010 - 08-06-2010
- Les informations de la Google Toolbar - 20-10-2002
- Les commandes site:, link: et linkdomain: sur Google et Yahoo - 10-06-2008
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités
