IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

fonction preg replace [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 104
    Par défaut fonction preg replace
    Bonjour.

    Dans le cadre d'un projet, je monte actuellement un blog en PHP.
    J'ai pris la décision d'utiliser un globalLayout et de rempalcer le corps de la page selon mes besoins.

    J'ai donc une page fixe dans laquelle la div qui a pour but de contenir le corps de la page ne contient actuellement que la chaine de caractère suivante : #content

    Mon but est de remplacer cette chaine de caractère par le code html que je souhaite.

    J'utilise pour ça la fonction preg_replace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                $pattern = '/#content/';
                preg_replace($pattern, $codeCorps, $code);
    où $codeCorps est le code html que je veux insérer et $code le code de la page html dans lequel je veux insérer le $codeMenu.

    Seulement cela ne marche pas du tout, puisque rien n'est remplacé. J'ai pourtant suivi l'exemple 2 du manuel de la fonction.

    Pourriez-vous m'indiquer si je me trompe au niveau de l'utilisation de la fonction oubien au niveau du pattern que j'utilise ou autre?

    Merci d'avance

  2. #2
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Bonsoir,

    Sans me pencher plus avant sur ta regex, je me demande tout simplement pourquoi utiliser une regex dans un cas comme celui-ci ou un simple str_replace ferait très bien l'affaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $contenu = str_replace('#content', $codeCorps, $code);
    Beaucoup plus efficace. Après si tu as une bonne raison d'utiliser la regex, on verra

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 104
    Par défaut
    Bonjour.

    Merci de la réponse. Effectivement l'utilisation de str_replace est beaucoup plus pertinent. J'avais pris preg_replace sans trop y réfléchir.

    Seulement cela ne marche toujours pas dans mon cas.

    J'ai fait deux tests

    Le premier, un simple remplacement de chaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $code = "je roule en #content";
                $pattern = '#content';
                $code = str_replace($pattern, 'automobile', $code);
                echo $code;
    Ici, j'ai bien la transformation, et je retrouve "je roule en automobile".

    Quand le remplace la variable $code, ceci ne marche plus du tout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $handle = fopen('vues/globalLayout.php', "r");
                $code = fread($handle, filesize('vues/globalLayout.php'));
                fclose($handle);
                $code = eval($code);
                $pattern = '#content';
                $code = str_replace($pattern, 'automobile', $code);
                echo $code;
    ici, le mot #content est inchangé

    la variable $code contenant du code html, y a-t-il des problème de parsing de celui-ci?

  4. #4
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Si tu fais un echo $code avant l'appel à str_replace tu vois bien la chaine #content dans ton code ??

    PS : évite eval() qui est vraiment pas propre du tout.

    Visiblement tu es parti pour faire un genre de système de template, pourquoi ne pas regarder du coté des systèmes déjà existants comme Smarty ou autre

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 104
    Par défaut
    exactement je vois #content au final.

    Dans le cadre du projet je ne pense pas avoir le droit de lorgner du côté des frameworks, donc pas de Smarty ou autre

  6. #6
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    salut,

    ton eval sur $code ne change pas non plus la valeur de '#content' ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PB avec les fonctions update/replace
    Par myers80 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 07/03/2007, 23h35
  2. Problèmes avec les fonctions et replace
    Par Tommyl dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 01/12/2006, 21h34
  3. caractéres spéciaux, fonction split, replace
    Par clochardevobsy dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 22/10/2005, 23h40
  4. [LG] Equivalent de la fonction VB "Replace"
    Par avigeilpro dans le forum Langage
    Réponses: 4
    Dernier message: 05/10/2005, 18h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo