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 :

Remplacer Width=".x.x.x" par Width="400" [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de annalady
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Par défaut Remplacer Width=".x.x.x" par Width="400"
    Hello

    Je souhaiterai remplacer la valeur de l'attribut "Width" par une valeur fixée à l'avance. J'ai commencé par ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (ereg("width=([0-9]{1,4})", $content, $regs)) 
    {
       echo($regs[0]);
    }
    else echo "Invalid format";
    Ca fonctionne unqiement quand je n'ai pas de guillemets dans la chaîne à traiter (quand j'ai Width=xxx et non Width="xxx")

    Ensuite pour les guillemets j'ai essayé ça :

    "width=\"([0-9]{1,4})\""

    puis ça

    "width=(\"[0-9]{1,4}\")"

    mais il ne trouve pas de match.

    Je pensais que pour reconnaitre les guillemets il suffisait de mettre un backslash devant, ce n'est pas le cas ?

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonjour,
    je crois que tu n'échappes pas le guillemets, avec ereg(""), il fautdrait deux antislashes d'échappement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(ereg("width=\\"([0-9]{1,4})\\"", $content, $regs)) 
    {
       echo($regs[0]);
    }
    else echo "Invalid format";
    Le mieux c'est peut etre comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (ereg('width=\"([0-9]{1,4})\"', $content, $regs)) 
    {
       echo($regs[0]);
    }
    else echo "Invalid format";

  3. #3
    Membre confirmé Avatar de annalady
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Par défaut
    Merci pour ta réponse

    J'ai essayé avec les apostrophes mais ça ne fonctionne pas.

    Et ta première solution me retourne un Parse error

    Est-ce que la logique de ereg est la même que celle de ereg_replace ? Parce qu'au final je vais probablement utiliser ereg_replace, vu que mon but est de remplacer les résultats trouvés par Width="400"...

  4. #4
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Si ma mémoire est bonne ereg renvoie juste un booléen qui permet de savoir si le pattern existe dans la chaine.

    Oui ereg_replace ou preg_replace devraient coller a ce que tu souhaites.

    Bonne journée

  5. #5
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    il n'est pas utile d'échapper le guillemet dans une expression régulière. Et si on devait le faire, il faudrait mettre 3 \ (deux pour un antislash et un pour échapper le guillemet) .

    Je ne vois pas d'erreur dans l'expression régulière donnée, donc je pense que ta source n'est simplement pas conforme à ce schéma. Pour preuve, ce code affiche bien 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ereg("width=\"([0-9]{1,4})\"", 'width="452"');
    Par ailleurs, utilises plutôt les expressions régulières pcre (preg_match, etc...) plutôt que POSIX (ereg, ...).

  6. #6
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Eusebe, thanks for your precious advices

  7. #7
    Membre confirmé Avatar de annalady
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Par défaut
    Arf, le problème vient effectivement de la chaîne que je récupère et dans laquelle je fais mes traitements.

    Je la récupère depuis un $_POST["blabla"] et vu que les magic quotes sont activées, il m'a mis des backslash devant mes guillemets ce sagouin.

    En gros je récupère Width=\"xxx\" au lieu de Width="xxx"

    Du coup j'ai essayé ça :

    ereg("width=\\\"([0-9]{1,4})\\\"", $content, $regs)

    mais ça ne passe toujours pas.

    Pour matcher la chaîne \" il faut bien faire \\\" ?

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

Discussions similaires

  1. Remplacer width:100%; par width:460px;
    Par tmlpqsdpmdlc dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 02/06/2015, 20h36
  2. [CKEditor] balise IMG remplacer style par width=
    Par japower01 dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 23/03/2010, 19h08
  3. Réponses: 2
    Dernier message: 29/11/2005, 14h17

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