PluXml.org

Blog ou CMS à l'Xml

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

#1 29/01/2019 17:21:43

Sudwebdesign
Membre
Lieu : Pyrénées orientales
Inscription : 15/02/2011
Messages : 263
Site Web

[résolu] Pluxml 5.7 : erreurs après avoir publié un titre en russe

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 wink

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 monkey

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/171 … 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 wink
+ media et plugins_mngr js plugFilter()    //Fix if filter string only contains whitespace (ie. spaces, tabs or line breaks v2)

tchuss


Le temps est notre argent, investissons le bien smile
Mon dépôt de plugins

Hors ligne

#2 29/01/2019 22:16:55

bazooka07
Membre
Lieu : Quelque part en Rhône-Alpes
Inscription : 06/02/2014
Messages : 1 238
Site Web

Re : [résolu] Pluxml 5.7 : erreurs après avoir publié un titre en russe

Cela s'appelle de la translittération.

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

Hors ligne

#3 30/01/2019 09:56:17

Sudwebdesign
Membre
Lieu : Pyrénées orientales
Inscription : 15/02/2011
Messages : 263
Site Web

Re : [résolu] Pluxml 5.7 : erreurs après avoir publié un titre en russe

bazooka07 a écrit :

Cela s'appelle de la translittération.

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

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 wink

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 hmm

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]] ops
tout roule bien avec celle-ci : [^A-Яa-я0-9]
Il reste les _ (tiret-bas) mais pourquoi? Il sont remplacés avec strtr wink

Vous pouvez télécharger la nouvelle archive ici

Mais il y a que class.plx.utils.php qui a changé smile
Voici le bout de code, pour qui ça intéresse.

[== PHP : class.plx.utils.php ==]
	/**
	 * Méthode qui convertit une chaine de caractères au format valide pour une url
	 *
	 * @param	str		chaine de caractères à formater
	 * @return	string		nom d'url valide
	 **/
	public static function title2url($str) {

		if(empty($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)
		$str = preg_replace('/[^A-Яa-я0-9]+/',' ',$str);//$str = preg_replace('/[^[:alnum:]]+/',' ',$str);
		return strtr(trim($str), array(' '=>'-', '_'=>'-'));
	}

	/**
	 * Méthode qui convertit une chaine de caractères au format valide pour un nom de fichier
	 *
	 * @param	str		chaine de caractères à formater
	 * @return	string		nom de fichier valide
	 **/
	public static function title2filename($str) {

		if(empty($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)
		$str = strtr($str, array('|'=>'', ':'=>''));//str_replace('|','',$str);
		$str = preg_replace('/\.{2,}/', '.', $str);
		$str = preg_replace('/[^A-Яa-я0-9]+/',' ',$str);//$str = preg_replace('/[^[:alnum:]|.|_]+/',' ',$str);
		return strtr(ltrim(trim($str),'.'), array(' '=>'-', '_'=>'-'));
	}

Au passage, merci a https://myregextester.com/index.php
@+

Dernière modification par Sudwebdesign (30/01/2019 09:57:23)


Le temps est notre argent, investissons le bien smile
Mon dépôt de plugins

Hors ligne

#4 30/01/2019 23:14:11

bazooka07
Membre
Lieu : Quelque part en Rhône-Alpes
Inscription : 06/02/2014
Messages : 1 238
Site Web

Re : [résolu] Pluxml 5.7 : erreurs après avoir publié un titre en russe

Pour mon plugin kzUrify, j'avais utilisé cette librairy :
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/

Dernière modification par bazooka07 (30/01/2019 23:15:47)

Hors ligne

Pied de page des forums

A propos Nous soutenir Contact Twitter Google+
Copyright © 2006-2019 PluXml.org, tous droits réservés