logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 22-02-2023 11:41:29

Mornagest
Membre
Distrib. : Debian 10
Noyau : Linux 4.9.58-xxxx-std-ipv6-64
(G)UI : Serveur
Inscription : 28-01-2023

Caractères d'échappement MySQL

Hello,

Je fais partie d'une bande de masochistes qui administrent un WordPress que nous venons d'installer pour y faire migrer quelques milliers d'articles (à l'époque écrits en BBcode) et donc convertis en HTML.

Globalement, ça s'est bien passé mais il y a quelques coquilles qui se sont glissées dans le code HTML de rédaction des articles et qui occasionnent des soucis d'affichage (retour à la ligne intempestif dans des tableaux, par exemple).

Le souci que j'ai, c'est que je ne maîtrise absolument pas MySQL et la façon de lui envoyer des requêtes avec des caractères d'échappement.

Je donne un exemple de souci qui apparaît :

https://encyclopedies.baldursgateworld. … -niveau-2/ là c'est la page avec un tableau qui comporte des retours à la ligne indésirables (entre le mot « Barde » et le mot « Mage » par exemple).

Le code « brut » d'une partie de ce tableau :

<table>
<tbody>
<tr>
<td></td>
<td><span style="font-weight: bold;">Nom</span></td>
<td><span style="font-weight: bold;">Utilisable par</span></td>
</tr>
<tr>
<td><img src="http://www.baldursgateworld.fr/filesmods/imagescms/bg1/sorts-png/profane/SPWI209-Chance.png" alt=" " /></td>
<td><a href="http://essaimigration.baldursgateworld.fr/content/bg1-chance-2965/">Chance</a></td>
<td><a href="http://essaimigration.baldursgateworld.fr/content/barde-42/">Barde</a>,

<a href="http://essaimigration.baldursgateworld.fr/content/mage-89/">Mage</a>, sauf invocateur</td>
</tr>
(etc)



https://encyclopedies.baldursgateworld. … -niveau-1/ là c'est un tableau similaire avec les retours que j'ai supprimés manuellement.

Et là, le code « brut » :

<table>
<tbody>
<tr>
<td></td>
<td><span style="font-weight: bold;">Nom</span></td>
<td><span style="font-weight: bold;">Utilisable par</span></td>
</tr>
<tr>
<td><img src="http://www.baldursgateworld.fr/filesmods/imagescms/bg1/sorts-png/profane/SPWI119-Absorption_mineure_de_Larloch.png" alt=" " /></td>
<td><a href="http://essaimigration.baldursgateworld.fr/content/bg1-absorption-mineure-de-larloch-2944/">Absorption mineure de Larloch</a></td>
<td><a href="http://essaimigration.baldursgateworld.fr/content/barde-42/">Barde</a>, <a href="http://essaimigration.baldursgateworld.fr/content/mage-89/">Mage</a>, sauf illusionniste, transmuteur</td>
</tr>
(etc)



Donc, j'aimerais virer ce retour à la ligne pour avoir des tableaux sympa. Évidemment, je pourrais le faire manuellement, mais :

- on a 3600 articles à vérifier (je ne sais pas lesquels contiennent un tableau ou non mais environ les 2/3) ;
- on aura sûrement d'autres soucis similaires à régler par la suite donc autant comprendre comment faire smile

Voilà une tentative de requête qui ne donne pas de résultat :

update wp_posts set post_content = replace(post_content, '</a>,\n\n<a href','</a>, <a href');



Je précise qu'on est sur Debian 10 avec MySQL(i) 8.0.31-23 même si je ne pense pas que ça change grand-chose sur ce point smile

Merci pour vos réponses !

Dernière modification par Mornagest (22-02-2023 11:42:42)

Hors ligne

#2 22-02-2023 15:07:35

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : Caractères d'échappement MySQL

L’approche de secours que je me garde dans un coin, si jamais on ne parvient pas à faire ça directement en SQL, est de bosser depuis un dump de la base de données avec des outils moins limités que ce qu’un prompt SQL fournit.

Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#3 22-02-2023 17:24:18

Cram28
Adhérent(e)
Lieu : Eure-et-Loir
Distrib. : Debian GNU/Linux 12.5
Noyau : Linux 6.1.0-20-amd64
(G)UI : Xfce 4.18
Inscription : 14-09-2020

Re : Caractères d'échappement MySQL

Hello bonjour,

Ca donnerait quoi un truc comme çà:

replace(replace(Name,char(10),''),char(13),'')


?


Travaille du chapeau: "Je sais que vous croyez comprendre ce que vous pensez que j'ai dit, mais je ne suis pas certain que vous réalisiez que ce que vous avez entendu n'est pas exactement ce que je voulais dire..."

Hors ligne

#4 22-02-2023 17:30:24

agp91
Membre
Distrib. : Debian GNU/Linux 11 (bullseye)
Noyau : Linux 5.10.0-20-amd64
(G)UI : xfce4
Inscription : 12-02-2023

Re : Caractères d'échappement MySQL

Y a trop longtemps que je n'ai pas mis le nez dans mysql, mais :
Dans le code de la pagehttps://encyclopedies.baldursgateworld. … -niveau-2/,
Ce n'est pas deux saut lignes qu'il y a mais la balise fermente </p>, un saut de ligne puis la balise ouvrante <p>.

<tbody>
<tr>
<td></td>
<td><span style="font-weight: bold;">Nom</span></td>
<td><span style="font-weight: bold;">Utilisable par</span></td>
</tr>
<tr>
<td><img decoding="async" src="http://www.baldursgateworld.fr/filesmods/imagescms/bg1/sorts-png/profane/SPWI209-Chance.png" alt=" " /></td>
<td><a href="http://essaimigration.baldursgateworld.fr/content/bg1-chance-2965/">Chance</a></td>
<td><a href="http://essaimigration.baldursgateworld.fr/content/barde-42/">Barde</a>,</p>
<p><a href="http://essaimigration.baldursgateworld.fr/content/mage-89/">Mage</a>, sauf invocateur</td>
</tr>


<td><a href="http://essaimigration.baldursgateworld.fr/content/barde-42/">Barde</a>,</p>
<p><a href="http://essaimigration.baldursgateworld.fr/content/mage-89/">Mage</a>, sauf invocateur</td>

Hihi, j'avais là des clowneries alors hop, supprimé tongue

Dernière modification par agp91 (22-02-2023 18:07:35)

En ligne

#5 22-02-2023 19:48:35

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : Caractères d'échappement MySQL

Sauf erreur de ma part les balises <p> sont automatiquement ajoutées par WordPress lors du rendu, mais en base de données c’est des sauts de ligne qui sont enregistrés.

Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#6 22-02-2023 23:38:44

agp91
Membre
Distrib. : Debian GNU/Linux 11 (bullseye)
Noyau : Linux 5.10.0-20-amd64
(G)UI : xfce4
Inscription : 12-02-2023

Re : Caractères d'échappement MySQL

vv222 a écrit :

Sauf erreur de ma part les balises <p> sont automatiquement ajoutées par WordPress lors du rendu, mais en base de données c’est des sauts de ligne qui sont enregistrés.


Tu as probablement raison, c'est aussi ce que je me suis dis, après coup, d'où :

agp91 a écrit :

Hihi, j'avais là des clowneries alors hop, supprimé tongue

En ligne

#7 23-02-2023 19:49:47

Mornagest
Membre
Distrib. : Debian 10
Noyau : Linux 4.9.58-xxxx-std-ipv6-64
(G)UI : Serveur
Inscription : 28-01-2023

Re : Caractères d'échappement MySQL

Cram28 a écrit :

Hello bonjour,

Ca donnerait quoi un truc comme çà:

replace(replace(Name,char(10),''),char(13),'')


?


Ben je sais pas, j'ose pas risquer sur ma base de prod et vv222 est mieux placé pour essayer sur un dump à part smile

Si j'ai bien compris, ça devrait pouvoir marcher, mais bon, j'ai tellement essayé des trucs qui étaient censé marcher et qui n'ont pas marché... bref ^^

Je vais voir avec vv222, donc ! smile

Hors ligne

#8 23-02-2023 22:15:14

Cram28
Adhérent(e)
Lieu : Eure-et-Loir
Distrib. : Debian GNU/Linux 12.5
Noyau : Linux 6.1.0-20-amd64
(G)UI : Xfce 4.18
Inscription : 14-09-2020

Re : Caractères d'échappement MySQL

Bah, ça doit sans doute pas le faire !

C'était une piste avec de vieux souvenirs de codes caractères et leur double présence sur des «aller à la ligne» et «retour chariot» ... tongue
v222 est déjà passé: ça doit pas être ce qu'il faut.

@+

Travaille du chapeau: "Je sais que vous croyez comprendre ce que vous pensez que j'ai dit, mais je ne suis pas certain que vous réalisiez que ce que vous avez entendu n'est pas exactement ce que je voulais dire..."

Hors ligne

#9 26-02-2023 20:32:27

Mornagest
Membre
Distrib. : Debian 10
Noyau : Linux 4.9.58-xxxx-std-ipv6-64
(G)UI : Serveur
Inscription : 28-01-2023

Re : Caractères d'échappement MySQL

A priori, j'ai réussi à trouver un truc qui fonctionne mais en passant par un dump de la base de données et en travaillant sur le texte ainsi extrait. Donc pas directement via une requête SQL...

sed -i '1{$!N};$!N;/,\n\n<a/{s@@, <a@;$!N;$!N};P;D' fichier_sortie



ce qui permet de retirer les retours à la ligne qui donnent sur une nouvelle ligne vide (\n\n) et en délimitant ma recherche avec "," au début et "<a" à la fin.

Je n'ai pas forcément tout compris aux options de sed (j'ai commencé à vaguement comprendre deux trucs cet après-midi sur les expressions régulières et sur sed donc faut m'excuser, c'est une langue étrangère pour moi ^^).

Hors ligne

#10 27-02-2023 10:02:39

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : Caractères d'échappement MySQL

Ouch, c’est velu comme expression ça :

1{$!N};$!N;/,\n\n<a/{s@@, <a@;$!N;$!N};P;D


Pour ce qui me semble être le même effet, je te propose :

N;N;s/,\n\n<a/, <a/


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

Pied de page des forums