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() - compréhension syntaxe


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
    Mars 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 82
    Par défaut Fonction preg_replace() - compréhension syntaxe
    Salut à tous,

    Après des heures de recherche, la fonction preg_replace() reste pour moi des plus obscures...

    Je veux tout simplement remplacer à la volée, dans une chaîne de caractères, toutes les balises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <b> par <span style="font-weight:bold;">
    et les balises </b> par </span>

    J'aimerais aussi, quand la chaîne comporte 2 <br /> à la suite, ne mettre qu'1 <br /> à la place.

    Merci de m'aider à écrire ce bout de code, mais aussi à m'aider à comprendre comment fonctionne cette fichue fonction (j'ai remarqué, dans bien des exemples, qu'il faut ajouter des caractères "bizarres" du genre / @ * @i etc... dans la chaîne recherchée, mais à quoi ça sert, ça, bouh, rien compris

    Merci beaucoup @+

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    pour parser du HTML c'est DOMDocument,
    sinon quel est l’intérêt de la chose ? d’où sort la source ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 82
    Par défaut
    Bonjour stealth35,

    La source provient du contenu d'un textarea stocké dans ma base de données. Ce textarea est associé à un éditeur html wysiwyg qui ne produit pas forcément du code super valide, et j'aimerais "nettoyer" un peu ce code avant de l'afficher dans ma page

    Citation Envoyé par stealth35 Voir le message
    pour parser du HTML c'est DOMDocument,
    sinon quel est l’intérêt de la chose ? d’où sort la source ?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    change plutôt d'éditeur, c'est le vrai problème de base

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 82
    Par défaut
    Le pb n'est pas là, ça va plus loin qu'un simple bout de code html non valide XHTML (d'ailleurs CKEditor le fait très bien).
    J'aimerais recentrer le sujet qui à l'origine portait sur la compréhension de la fonction php preg_replace(), et non pas sur la validité d'un code ou un débat sur les éditeurs wysiwyg ! Je vous explique qd même rapidement pourquoi je veux modifier à la volée des fragments de code d'un contenu provenant d'un champ de saisie textarea et stocké dans une BDD :

    En fait, j'utilise cet éditeur pour peupler des zones de contenus en "saisie libre" dans le site. Et par exemple, pour les besoins du site, l'utilisateur peut vouloir insérer un lien vers un autre site avec l'option target=_blank.

    Or, tout le contenu administrable du site est également utilisé pour alimenter le site version "mobiles/smartphones", et j'aimerais rendre ce site le plus possible compatible avec ces systèmes. Mais le target=_blank est rédhibitoire car il signifie ouverture d'une autre fenêtre, ce qui n'est pas possible avec la plupart des mobiles, sauf peut être les navigateurs des smartphones dernière génération, mais qui sont loin de représenter la majorité des internautes mobiles.
    Bref, c'est ce genre de bouts de code que j'aimerais supprimer à la volée lors de l'affichage de la version Mobiles des contenus, d'où mon appel à l'aide sur la fonction preg_replace().

    Merci pour votre aide

    Citation Envoyé par stealth35 Voir le message
    change plutôt d'éditeur, c'est le vrai problème de base

  6. #6
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Bonjour,

    Si c'est juste pour remplacer des chaînes de caractères, utilise plutôt str_replace.

    Mais les conseils de stealth35 sont ce qu'il y a de mieux

Discussions similaires

  1. [PHP 5.4] syntaxe fonction preg_replace
    Par hindioriental dans le forum Langage
    Réponses: 9
    Dernier message: 19/02/2013, 10h33
  2. [RegEx] PB délimiteur dans la fonction "preg_replace"
    Par tiliut dans le forum Langage
    Réponses: 3
    Dernier message: 02/08/2007, 16h42
  3. [RegEx] Problème de fonction preg_replace
    Par alexmorel dans le forum Langage
    Réponses: 3
    Dernier message: 25/09/2006, 17h48
  4. Problème fonction preg_replace
    Par alexmorel dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2006, 08h03
  5. [RegEx] preg_replace et syntaxe des expressions régulières
    Par MmoulinexX dans le forum Langage
    Réponses: 4
    Dernier message: 04/06/2006, 23h57

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