[Résolu] Pluxml 5.7 : erreurs après avoir publié un titre en russe
Sudwebdesign
Member
aucune date et impossible d'aller rééditer l'article un fois quitté
(a part si on saisit l'adresse article.php?a=#### a la main)
testé avec comme titre : Заголовок статьи
OU
Аа Бб Вв Гг Дд Ее Ёё Жж Зз Ии Йй Кк Лл Мм Нн Оо Пп Рр Сс Тт Уу Фф Хх Цц Чч Шш Щщ Ъъ Ыы Ьь Ээ Юю Яя
clic sur publier (ou brouillonner) et pif le ch#en !
Mise A Jour du coeur de PluXml 5.7 afin d'utiliser les caractères cyriliques a-z >>> a-я
Si cela peut dépanné quelques un(e)s
Explications :
Après quelques recherches pour trouver le pourquoi du comment en russe lorsque l'on crée et publie un article avec le titre par défaut il y avais pleins de notices du style undefined index de la classe plxdate qui n'avaient aucun sens 8o
En réalité il s'agit des expression régulières qui oublie quelques lettres en cyriliques et artInfoFromFilename du moteur capture rien, cela "matche" a coté.
L'idée est venus de cette réponse : https://stackoverflow.com/questions/1716609/how-to-match-cyrillic-characters-with-a-regular-expression (entres autres)
@AlexErygin For Russian only characters it is: [ЁёА-я] (where А is Russian). The unicode code for Russian а is right after Я, so you don't need 2 ranges. The unicode codes for Ёё is not between А-я so you need to specify Ёё separately.
et comme les Ёё sont transformés en e pour les url (avec cette MAJ)
il manque 4 lettres : plxutils::removeAccents($str,$charset='utf-8')
voici la #soluce qui a fait tout #tombé_en_marche
a-z0-9 ::: latin : 26 letters [:alnum:] #origin
a-я0-9 ::: A-Яa-я0-9 ::: cyrilic : 33 letters #TEM
PETIT PLUS inside zip :
title2url & title2filename($str)
if(empty(trim($str))) return '';#speedup
$str = mb_convert_case(plxUtils::removeAccents($str,PLX_CHARSET), MB_CASE_LOWER, PLX_CHARSET);//php.net/manual/fr/function.strtolower.php#90061 (php4 > 7)
+ langues L_LONG_#MONTH
+ media et plugins_mngr js plugFilter() //Fix if filter string only contains whitespace (ie. spaces, tabs or line breaks v2)
tchuss
(a part si on saisit l'adresse article.php?a=#### a la main)
testé avec comme titre : Заголовок статьи
OU
Аа Бб Вв Гг Дд Ее Ёё Жж Зз Ии Йй Кк Лл Мм Нн Оо Пп Рр Сс Тт Уу Фф Хх Цц Чч Шш Щщ Ъъ Ыы Ьь Ээ Юю Яя
clic sur publier (ou brouillonner) et pif le ch#en !
Mise A Jour du coeur de PluXml 5.7 afin d'utiliser les caractères cyriliques a-z >>> a-я
Si cela peut dépanné quelques un(e)s
Explications :
Après quelques recherches pour trouver le pourquoi du comment en russe lorsque l'on crée et publie un article avec le titre par défaut il y avais pleins de notices du style undefined index de la classe plxdate qui n'avaient aucun sens 8o
En réalité il s'agit des expression régulières qui oublie quelques lettres en cyriliques et artInfoFromFilename du moteur capture rien, cela "matche" a coté.
L'idée est venus de cette réponse : https://stackoverflow.com/questions/1716609/how-to-match-cyrillic-characters-with-a-regular-expression (entres autres)
@AlexErygin For Russian only characters it is: [ЁёА-я] (where А is Russian). The unicode code for Russian а is right after Я, so you don't need 2 ranges. The unicode codes for Ёё is not between А-я so you need to specify Ёё separately.
et comme les Ёё sont transformés en e pour les url (avec cette MAJ)
il manque 4 lettres : plxutils::removeAccents($str,$charset='utf-8')
voici la #soluce qui a fait tout #tombé_en_marche
a-z0-9 ::: latin : 26 letters [:alnum:] #origin
a-я0-9 ::: A-Яa-я0-9 ::: cyrilic : 33 letters #TEM
PETIT PLUS inside zip :
title2url & title2filename($str)
if(empty(trim($str))) return '';#speedup
$str = mb_convert_case(plxUtils::removeAccents($str,PLX_CHARSET), MB_CASE_LOWER, PLX_CHARSET);//php.net/manual/fr/function.strtolower.php#90061 (php4 > 7)
+ langues L_LONG_#MONTH
+ media et plugins_mngr js plugFilter() //Fix if filter string only contains whitespace (ie. spaces, tabs or line breaks v2)
tchuss
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
On en a parlé il y a un an :
https://forum.pluxml.org/viewtopic.php?id=6090
J'avais créé un plugin express à l'époque
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Aucune idée s'il s'agit de translittération, mais a priori non, car le but du jeu est que tout les caractères en cyrilliques soit possible dans l'url et le nom du fichier
Après quelques tests de la précédente maj, il a un pb avec les titres avec un _ (tiret bas) ou : (deux points) il refait la même erreur
Après quelques recherches et essais, il y a 2 bourdes (title2url et title2filename) dans le fichier inc/class.plx.utils.php au niveau des expreg
[^[:alnum:]] est égale a [^a-zA-Z0-9] et non à [^[a-zA-Z0-9]] :8
tout roule bien avec celle-ci : [^A-Яa-я0-9]
Il reste les _ (tiret-bas) mais pourquoi? Il sont remplacés avec strtr
Vous pouvez télécharger la nouvelle archive ici
Mais il y a que class.plx.utils.php qui a changé
Voici le bout de code, pour qui ça intéresse.
Au passage, merci a https://myregextester.com/index.php
@+
Notre temps est la seule monnaie vraie ;)
Site, Dépôt, framagit, MyShop, Factux
#mozinor président
https://github.com/jbroadway/urlify
Elle n'est pas limitée qu'au russe.
Et le russe de St-Petersbourg, qui avait lancé la discussion, semblait très satisfait de mon plugin.
Mais pour des raisons professionnelles, je n'ai pas trop le temps de faire la mise à jour.
Pour tester les expressions régulières, il y a regex101 assez populaire et sympa d'utilisation :
https://regex101.com/
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2