SELECT syndic_articles.date, syndic_articles.url,
syndic_articles.descriptif FROM `modif`.spip_syndic_articles AS
`syndic_articles` INNER JOIN `modif`.spip_syndic AS L1 ON (
L1.id_syndic = syndic_articles.id_syndic ) WHERE (L1.statut = 'publie')
AND (syndic_articles.statut = 'publie') AND (syndic_articles.id_syndic
REGEXP '(144)') AND (syndic_articles.titre REGEXP 'Côtes
d’Armor') ORDER BY syndic_articles.date DESC LIMIT 0,4
Il s'agit de croiser le titre d'une rubrique avec le titre d'un article
issu de syndication.
Si le titre de la rubrique est contenu dans le titre de l'article
syndiqué : l'afficher.
Ici avec Côtes d'Armor, la balise #INFO_TITRE{rubrique, #ENV{id_rubrique}} produit le masque : REGEXP 'Côtes d’Armor' .
Cela ne retourne rien.
Le titre de l'article syndiqué contient la chaîne "Côtes d'Armor".
Le titre de la rubrique est la chaîne "Côte d'Armor"
Le REGEXP mysql est mal encodé, "Côtes d’Armor".
Il manque juste l'échappement pour l'apostrophe de 'Côtes d'Armor'.
C'est l'encodage de la page debug de spip qui donnait REGEXP 'Côtes
d’Armor').
Code :
SELECT syndic_articles.date, syndic_articles.url,
syndic_articles.descriptif
FROM spip_syndic_articles AS `syndic_articles`
INNER JOIN spip_syndic AS L1 ON ( L1.id_syndic =
syndic_articles.id_syndic )
WHERE (L1.statut = 'publie')
AND (syndic_articles.statut = 'publie')
AND (syndic_articles.id_syndic REGEXP '(144)')
AND (syndic_articles.titre REGEXP 'Côtes d’Armor')
ORDER BY syndic_articles.date DESC
LIMIT 0,4
Code corrigé (prise en compte des apostrophes pour la requete SQL
SELECT syndic_articles.date, syndic_articles.url,
syndic_articles.descriptif
FROM spip_syndic_articles AS
`syndic_articles`
INNER JOIN spip_syndic AS L1 ON ( L1.id_syndic =
syndic_articles.id_syndic )
WHERE (L1.statut = 'publie')
AND
(syndic_articles.statut = 'publie')
AND
(syndic_articles.id_syndic REGEXP '(144)')
AND
(syndic_articles.titre REGEXP 'Côtes d\’Armor')
ORDER BY
syndic_articles.date DESC
LIMIT 0,4
Il faut donc échapper les apostrophes avant d'envoyer la requête.
Pas de bug, les titres du flux syndiqué n'utilisent pas l'apostrophe
(' - ' - U+0027) dans les titres mais ‘ (LEFT SINGLE QUOTATION
MARK - ‘ - ‘ - U+2018 ).
N'y a t-il pas plus élégant que '’' dans replace{\x27,'’',S} ?
Merci,
Eric
Le mercredi 05 février 2020 à 03:28 +0100, eric a écrit :
Bonsoir,
Pas de bug, les titres du flux syndiqué n'utilisent pas l'apostrophe
(' - ' - U+0027) dans les titres mais ‘ (LEFT SINGLE
QUOTATION
MARK - ‘ - ‘ - U+2018 ).
Eric
_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net