Page 1 sur 2
if MONTITRE contient A alors....
Posté : 04 mars 2013, 17:12
par pimpmax
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
Re: if MONTITRE contient A alors....
Posté : 04 mars 2013, 17:20
par maxpimp
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>";
}
?>
Re: if MONTITRE contient A alors....
Posté : 04 mars 2013, 19:48
par sam12
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
Re: if MONTITRE contient A alors....
Posté : 05 mars 2013, 11:00
par maxpimp
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'

Re: if MONTITRE contient A alors....
Posté : 05 mars 2013, 11:22
par maxpimp
j'ai utilisé un autre format :
if($found) {
foreach($found as $pos)
Code : Tout sélectionner
<?php
$titre =stripslashes($donnees['titre']);
$findme = 'Vidé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éos du GBO</a>";
}
?>
Cette fois ci mon lien apparait même sur les pages qui ne contiennent pas le mot vidéo

Re: if MONTITRE contient A alors....
Posté : 05 mars 2013, 19:28
par sirakawa
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 ++;
}
Re: if MONTITRE contient A alors....
Posté : 06 mars 2013, 16:34
par two3d
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
Re: if MONTITRE contient A alors....
Posté : 06 mars 2013, 19:09
par sirakawa
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)
Re: if MONTITRE contient A alors....
Posté : 06 mars 2013, 23:02
par two3d
altgr+6 = barre oblique ? pas comme ça qu'ont l'appel ?
Re: if MONTITRE contient A alors....
Posté : 07 mars 2013, 09:49
par sirakawa
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)
Re: if MONTITRE contient A alors....
Posté : 07 mars 2013, 10:27
par two3d
super, merci pour ces informations

Re: if MONTITRE contient A alors....
Posté : 07 mars 2013, 10:49
par maxpimp
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é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
Re: if MONTITRE contient A alors....
Posté : 07 mars 2013, 11:53
par maxpimp
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
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éos du GBO</a>';
}
else
{
echo "non il n'y a pas le mot vidéo dans le titre " ;
echo $titre;
}
?>
Re: if MONTITRE contient A alors....
Posté : 07 mars 2013, 17:54
par two3d
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éos du GBO</a>';
} else {
echo "non il n'y a pas le mot vidéo dans le titre " ;
echo $titre;
}
Re: if MONTITRE contient A alors....
Posté : 08 mars 2013, 11:54
par maxpimp
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..."