if MONTITRE contient A alors....

pimpmax
Invité n'ayant pas de compte PHPfrance

04 mars 2013, 17:12

Hello,

Je voudrais mettre une condition dans une page :
Si mon titre de page contient le mot "vidéo" alors echo "Lien vers toutes les vidéos".

Quelle est la syntaxe please ?

Merci

Eléphanteau du PHP | 12 Messages

04 mars 2013, 17:20

en sachant que j'ai déjà codé ceci mais je n'ai pas de réponse :

Code : Tout sélectionner

<?php if($titre == "%vidéo%") { echo "<a href="#">Liste des vidéos</a>"; } ?>

Eléphant du PHP | 343 Messages

04 mars 2013, 19:48

Pourquoi les %? Si tu veux utiliser 1 regex tu peux passer par preg_match: http://www.php.net/manual/fr/function.preg-match.php
sinon tu peux utiliser strpos: http://www.php.net/manual/fr/function.strpos.php
Développeur web

Eléphanteau du PHP | 12 Messages

05 mars 2013, 11:00

Pourquoi les %? Si tu veux utiliser 1 regex tu peux passer par preg_match: http://www.php.net/manual/fr/function.preg-match.php
sinon tu peux utiliser strpos: http://www.php.net/manual/fr/function.strpos.php
Merci sam12, j'ai testé strpos mais ça ne fonctionne pas, j'ai du raté une étape.
Voici mon code

Code : Tout sélectionner

<?php $titre =stripslashes($donnees['titre']); //mon titre pris dans ma BDD, dans la page que je teste le titre est "VIDEO : TOP 10..." $findme = 'Vidéo'; $pos = strpos($titre, $findme); if ($pos === false) { echo "La chaîne '$findme' ne se trouve pas dans la chaîne '$mystring'"; // c'est la réponse que j'ai sur ma page alors que logiquement VID se trouve dans mon titre } else { echo "La chaine '$findme' a été trouvée dans la chaîne '$mystring'"; } ?>
Voici exactement la réponse :
La chaine 'Vidéo' ne se trouve pas dans la chaine 'Vidéo : Lundi Basket n°17' :shock:

Eléphanteau du PHP | 12 Messages

05 mars 2013, 11:22

j'ai utilisé un autre format : if($found) {
foreach($found as $pos)

Code : Tout sélectionner

<?php $titre =stripslashes($donnees['titre']); $findme = 'Vid&eacute;o'; $found = strpos($titre, $findme); if($found) { foreach($found as $pos) { echo "La chaîne '$findme' ne se trouve pas dans la chaîne '$titre'"; } } else { echo "<a href='multimedia-video.php'>Voir la liste de toutes les vid&eacute;os du GBO</a>"; } ?>
Cette fois ci mon lien apparait même sur les pages qui ne contiennent pas le mot vidéo #-o

Mammouth du PHP | 2278 Messages

05 mars 2013, 19:28

Bjr,
Question de base:
Encodage de la BDD en utf-8 ?
parce que alors, il faudrait ajouter dans le script:
mb_internal_encoding( 'UTF-8');
et utiliser: mb_strpos au lieu de strpos
quelque chose de ce genre, un peu compliqué, mais facile à généraliser
$possibles = array("video","vidéo");
$limite = count ($possibles);
$est_video = false;
$i = 0;
$titre =mb_strtolower(stripslashes($donnees['titre']));
while (($i < $limite) and ($est_video == false))
{
 $est_video = (mb_strpos($possibles[$i], $titre) === true);
$i ++;
}
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Mammouth du PHP | 1564 Messages

06 mars 2013, 16:34

salut, avec preg_match ça fonctionne pas ?

voici ce que j'aurais fait:
$titre = "123 Vidéo bla bla bla";
if(preg_match("#vid(é|e)o#i",$titre)) 
	echo 'trouvé!';
else
	echo 'Non trouvé';
décorticage du preg_match pour explication:

#vid(é|e)o#i"
i = insensible à la casse (recherche ViDeo comme viDEo, etc...)
(é|e) recherche vidéo ou video, la barre oblique dit "ou"

Bonne continuation

Mammouth du PHP | 2278 Messages

06 mars 2013, 19:09

salut, avec preg_match ça fonctionne pas ?

voici ce que j'aurais fait:
$titre = "123 Vidéo bla bla bla";
if(preg_match("#vid(é|e)o#i",$titre)) 
	echo 'trouvé!';
else
	echo 'Non trouvé';
décorticage du preg_match pour explication:

#vid(é|e)o#i"
i = insensible à la casse (recherche ViDeo comme viDEo, etc...)
(é|e) recherche vidéo ou video, la barre oblique dit "ou"

Bonne continuation
Ca doit fonctionner, mais je n'ai pas le réflexe, car je ne m'en sers que lorsque j'ai des expressions hyper complexes.
En revanche ce n'est pas la barre oblique qui dir 'ou', mais la barre verticale (ALTGr 6)
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Mammouth du PHP | 1564 Messages

06 mars 2013, 23:02

altgr+6 = barre oblique ? pas comme ça qu'ont l'appel ?

Mammouth du PHP | 2278 Messages

07 mars 2013, 09:49

On l'appelle le "Pipe"... parce qu'il sert au départ à passer des résultats d'une commande système à une autre, comme dans un tuyau:
ps -ef
la commande ps renvoie une liste de processus qui est affichée
ps -ef|grep mon_fic
ici la liste est repassée à la commande grep qui y cherche mon_fic et affiche le résultat.
Possible aussi avec l'invite de commande s d Windaube.
la barre oblique c'est slash (/) ou antislash (\ Altgr 8)
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Mammouth du PHP | 1564 Messages

07 mars 2013, 10:27

super, merci pour ces informations :wink:

Eléphanteau du PHP | 12 Messages

07 mars 2013, 10:49

Hello,

Alors avec preg_match ça fonctionne pas voici mon code :

Code : Tout sélectionner

<?php $titre =($donnees['titre']); if(preg_match("#vid(é|e)o#i",$titre)) { echo '<a href="multimedia-video.php">Voir la liste de toutes les vid&eacute;os du GBO</a>'; } else { echo "non"; echo $titre; } ?>
Là dans tous les cas j'ai la réponse FALSE et pourtant mon $titre est bien reconnu.
je vais maintenant essayer l'idée de sirakawa avec mb_strtolower

Eléphanteau du PHP | 12 Messages

07 mars 2013, 11:53

Toujours rien, j'ai mixé le preg_match et le mb_strtolower mais il me sort encore la réponse bizarre non il n'y a pas le mot vidéo dans le titre vidéo : lundi basket n°18 #-o
Et le problème ne vient pas du mot vidéo car j'ai testé le mot basket et il n'est pas trouvé non plus dans la chaîne lundi basket !

Code : Tout sélectionner

<?php $titre =mb_strtolower(stripslashes($donnees['titre'])); if(preg_match("#vid(é|e)o#i",$titre)) { echo '<a href="multimedia-video.php">Voir la liste de toutes les vid&eacute;os du GBO</a>'; } else { echo "non il n'y a pas le mot vid&eacute;o dans le titre " ; echo $titre; } ?>

Avatar du membre
Mammouth du PHP | 1564 Messages

07 mars 2013, 17:54

salut, j'ai testé en local, le code fonctionne très bien:
$titre = "vidéo lundi basket n°18";
if(preg_match("#vid(é|e)o#i",$titre)) {
	echo '<a href="multimedia-video.php">Voir la liste de toutes les vid&eacute;os du GBO</a>';
} else {
	echo "non il n'y a pas le mot vid&eacute;o dans le titre " ;
	echo $titre;
}

Eléphanteau du PHP | 12 Messages

08 mars 2013, 11:54

Effectivement de mon coté ça fonctionne bien quand je déclare
$titre="Vidéo...."
Par contre quand je déclare $titre=mb_strtolower($donnees['titre']), le titre est reconnu, l'echo fonctionne mais j'ai encore cette réponse le mot vidéo n'apparait pas dans "Vidéo..."