Aller au contenu

Problème étrange avec if(eregi)


papounet

Sujets conseillés

Bonjour!

Je rencontre actuellement un drôle de problème sur un site, je m'explique!

Dans un fichier, je rentre mes mots du style:

<?php
$mot_1 = "ping pong";
$mot_2 = "tennis de table";
$mot_3 = "raquette gaucher";
?>

Ensuite, dans la page dynamique j'inclue la chose suivante:

<?php include('inc/title.php'); ?>

et plus bas

<?php include('inc/naviguation.php'); ?>

Jusque là ok, mais pour diverses raison les titres et les ancres,title,et h ref sont générés automatiquement via les mot que j'entre en leur donnant les valeurs cités en début de post

Puis pour pouvoir rendre utilisable les mot en l'état dans une url, je les encodes de la sorte dans le fichier encode-url.php:

<?php
$string = $_SERVER["REQUEST_URI"];

$encode_1 = str_replace(" ", "-", $mot_1);
$url_1 = '/'.$encode_1.'.html';

$encode_2 = str_replace(" ", "-", $mot_2);
$url_2 = '/'.$encode_2.'.html';

$encode_3 = str_replace(" ", "-", $mot_3);
$url_3 = '/'.$encode_3.'.html';
?>

chose qui me permet de créer automatiquement les titles selon la page comme ceci:

<?php

require('encode-url.php');// encodage des urls par rapport aux mot clés

if (eregi($url_1, $string))
{
echo '<title>'.$mot_1 = ucfirst(strtolower($mot_cle_1)).'</title>';
}
if (eregi($url_2, $string))
{
echo '<title>'.$mot_2 = ucfirst(strtolower($mot_cle_2)).'</title>';
}
if (eregi($url_3, $string))
{
echo '<title>'.$mot_3 = ucfirst(strtolower($mot_cle_3)).'</title>';
}
?>

Puis dans la même pages mais plus bas dans le code, je fait la même manip mais cette fois-ci destinée à la navigation du site en faisant:

<?php

require('encode-url.php');// encodage des urls par rapport aux mot clés

if (eregi($url_1, $string))//page 1
{
echo ''.$mot_1 = ucwords(strtolower($mot_1)).'
<a href="'.$mot_2 = str_replace(" ", "-", $mot_2).'.html" title="'.$mot_2 = ucfirst(strtolower($mot_2)).'">'.$mot_2 = ucwords(strtolower($mot_2)).'</a>
<br />
<a href="'.$mot_3 = str_replace(" ", "-", $mot_3).'.html" title="'.$mot_2 = ucfirst(strtolower($mot_3)).'">'.$mot_3 = ucwords(strtolower($mot_3)).'</a>
?>

Seulement le code généré par if eregi n'accepte de fonctionner qu'une seule fois et c'est ce là que je ne comprends, pas, en fait le titre est bien crée et tout fonctionnement parfaitement, par contre les liens de naviguation ne sont pas là, comme si le if (eregi) repondait false

Pourtant si je retire le include"title" et que donc plus rien ne se passe au niveau des titres alors le code fonctionne bien sur les liens de naviguation!

Je que je trouve étrange c'est donc que le if(eregi) ne soie effectué qu'une seule fois !!

Ha oui et j'allais oublier, ce qui est etrange aussi, c'est que si je remplace le "$ur_1" dans le eregi de la navigation directement par l'url alors cela fonctionne donc apperement le problème est localisé mais je comprends pas pourquoi

Merci à ceux qui m'auront lu :thumbsup:

Modifié par papounet
Lien vers le commentaire
Partager sur d’autres sites

Bon j'ai contourné le problème différement après avoir testé les preg_match et autres ....

$page = strtolower($mot_1);
$verif = '/'.$page.'.html';
$string = $_SERVER["REQUEST_URI"];

if ($string == $verif)//page 1
{
echo .....

Pas terrible les superglobales mais dans l'état ca me conviens :)

Modifié par papounet
Lien vers le commentaire
Partager sur d’autres sites

Bon tenant quand même à savoir la raison du dysfonctionnement afin de comprendre, j'ai persisté :nonono:

J'ai donc compris, en faite je faisais un require(encode_url) deux fois et dans mon deuxième appel la chaine était donc travaillé deux fois par le str_replace, ce qui me donnais un résultais différent de ce que j'attendais :hypocrite:

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...