[RESOLU] regex assez complexe

Eléphant du PHP | 51 Messages

14 nov. 2016, 12:57

Je dois remplacer une ligne de code par une autre. C'est dans une base de données, mais je l'ouvrirais dans un éditeur de texte pour faire le chercher et remplacer.

Voilà ce que j'ai :

Code : Tout sélectionner

<iframe width="632" height="356" src="https://www.youtube-nocookie.com/embed/k7vEHYgan6E?rel=0" frameborder="0" class="image-centre" allowfullscreen="allowfullscreen"></iframe>
Et voilà ce que je veux :

Code : Tout sélectionner

<div class="video-container"><iframe width="640" height="360" src="https://www.youtube-nocookie.com/embed/k7vEHYgan6E?rel=0" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div>
J'ai déjà essayé 50 fois, mais la syntaxe nécessaire est trop complexe pour moi.
J'ai PSPad, Notepad++ et Atom comme softs. Suis aussi preneur de conseils pour un autre logiciel.
Merci à ceux qui me répondront.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 nov. 2016, 13:34

salut,

tu peux tester tes expressions régulières de façon simple sur https://regex101.com/

si tu utilises l'expression suivante

Code : Tout sélectionner

<iframe width="(\d{0,})" height="(\d{0,})" src="(.+)" frameborder="0" class="image-centre" allowfullscreen="allowfullscreen"></iframe>
et pour remplacement

Code : Tout sélectionner

<div class="video-container"><iframe width="$1" height="$2" src="$3" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div>
tu devrais avoir ce que tu souhaites (testé avec atom).

ce serait plus simple de le faire directement dans le SGBD,
Par exemple pour mysql http://dev.mysql.com/doc/refman/5.7/en/ ... tor_regexp
et un exemple avec une UDF pour simplifier la suite : http://www.databasejournal.com/features ... mysql.html


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 51 Messages

14 nov. 2016, 14:38

Merci de cette réponse !
J'ai abandonné l'idée de faire la manip direct dans la BDD, parce que si je fais une erreur, je ne pourrais pas la rattraper.

Cela ne semble pas marcher sur Atom, j'ai un petit sens interdit qui s'affiche sur le bouton Replace All...
Je mets 640 et 360 à la place de $1 et $2, puisque ces valeurs sont fixes, tandis que la valeur src ne change pas. Je continue à tester...

Eléphant du PHP | 51 Messages

14 nov. 2016, 14:39

Merci aussi pour
https://regex101.com/
Très bone idée que d'avoir fait ce site.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

16 nov. 2016, 15:47

Merci de cette réponse !
J'ai abandonné l'idée de faire la manip direct dans la BDD, parce que si je fais une erreur, je ne pourrais pas la rattraper.
c'est pour cela que les sauvegardes existe ;)
Cela ne semble pas marcher sur Atom, j'ai un petit sens interdit qui s'affiche sur le bouton Replace All...
Je mets 640 et 360 à la place de $1 et $2, puisque ces valeurs sont fixes, tandis que la valeur src ne change pas. Je continue à tester...

pour atom tu as activé l'utilisation d'expressions régulières ? le bouton ".*" a droite de find ?
atom_reg_exp.png
pour https://regex101.com/ effectivement le mec à eu une bonne idée, surtout en utilisant différents langages ;)
Il en existe d'autre mais c'est celui qui me convient le mieux.

@+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Il en faut peu pour être heureux ......

Eléphant du PHP | 51 Messages

16 nov. 2016, 19:09

Oui, voilà, j'y suis arrivé. Je n'ai vraiment pas l'habitude de faire des choses comme cela, alors je n'ai pas les bons reflexes.

A côté de cela, manifs en direct sur la DB ou dans un éditeur de texte, je prendrais toujours l'éditeur. Si je fais une fausse manip, un Ctrl+Z et c'est réparé, alors que s'il faut que je réinstalle la base à partir d'une sauvegarde, c'est nettement plus de boulot.