11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Y a-t-il un script encore plus simple que remplacer("replace") tous les a accentués, en a, tous les e accentués, en e, etc., pour désaccentuer les caractères en JS ?
Merci !
Modérateur
Et l'eau,

Pour mon routing, j'ai construis un slugify. À toi de faire un changemet pour que ça te convienne.


function slugify(string) {
        const a = 'àáâäæãå???ç????èéêë???????îïí??ì??ñ???ôöòóœø?õ????ß?š????ûüùú???????ÿýž??·/_,:;'
        const b = 'aaaaaaaaaacccddeeeeeeeegghiiiiiilmnnnnoooooooooprrsssssttuuuuuuuuuwxyyzzz------'
        const p = new RegExp(a.split('').join('|'), 'g')

        return string.toString().toLowerCase()
        .replace(/\s+/g, '-') // Replace spaces with -
        .replace(p, c => b.charAt(a.indexOf(c))) // Replace special characters
        .replace(/&/g, '-and-') // Replace & with 'and'
        .replace(/[^[a-zA-Z0-9?-?]-]+/g, "") // Arabic support
        .replace(/--+/g, '-') // Replace multiple - with single -
        .replace(/^-+/, '') // Trim - from start of text
        .replace(/-+$/, '') // Trim - from end of text
    }
Bonjour,

Euuuh...
a écrit :
Pour mon routing, j'ai construis un slugify.
C'est du français ça ? Car je ne comprends rien...

Mais bon, par rapport à ce script, je préfère ma méthode plus courte...

Remarque : Les points d'interrogation dans le code, c'est le forum qui les a mis à la place d'autres caractères qu'il ne connaissait pas ?

Mais merci quand même !
Modifié par js_html (25 Mar 2021 - 13:17)
Bonjour,
J'utilisais ça et je voulais savoir s'il y avait plus court.
maVariable=maVariable.replace(/[éêèë]/g,'e').replace(/[áâàäåã]/g,'a').replace(/[úûùü]/g,'i').replace(/[íîïì]/g,'i').replace(/[öøóôòõ]/g,'o').replace(/[ç]/g,'c').replace(/[ñ]/g,'n')
Merci !
Merci à toi ... et à Niuxe.
slugify n'est pas français, certes, mais c'est utile de savoir comment le reste du monde appelle une fonctionnalité ... Ça aide dans les recherches. Comment dirait-on en français ?

Je pense qu'il est difficile de faire court. Par exemple, voici la table de correspondance des caractères du framework php codigniter 3 pour remplacer des caractères spéciaux: y a du monde aussi.
	$foreign_characters = array(
		'/ä|æ|?/' => 'ae',
		'/ö|œ/' => 'oe',
		'/ü/' => 'ue',
		'/Ä/' => 'Ae',
		'/Ü/' => 'Ue',
		'/Ö/' => 'Oe',
		'/À|Á|Â|Ã|Ä|Å|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?/' => 'A',
		'/à|á|â|ã|å|?|?|?|?|?|ª|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?/' => 'a',
		'/?/' => 'B',
		'/?/' => 'b',
		'/Ç|?|?|?|?/' => 'C',
		'/ç|?|?|?|?/' => 'c',
		'/?/' => 'D',
		'/?/' => 'd',
		'/Ð|?|?|?/' => 'Dj',
		'/ð|?|?|?/' => 'dj',
		'/È|É|Ê|Ë|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?/' => 'E',
		'/è|é|ê|ë|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?/' => 'e',
		'/?/' => 'F',
		'/?/' => 'f',
		'/?|?|?|?|?|?|?/' => 'G',
		'/?|?|?|?|?|?|?/' => 'g',
		'/?|?/' => 'H',
		'/?|?/' => 'h',
		'/Ì|Í|Î|Ï|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?/' => 'I',
		'/ì|í|î|ï|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?/' => 'i',
		'/?/' => 'J',
		'/?/' => 'j',
		'/?|?|?/' => 'K',
		'/?|?|?/' => 'k',
		'/?|?|?|?|?|?|?/' => 'L',
		'/?|?|?|?|?|?|?/' => 'l',
		'/?/' => 'M',
		'/?/' => 'm',
		'/Ñ|?|?|?|?|?/' => 'N',
		'/ñ|?|?|?|?|?|?/' => 'n',
		'/Ò|Ó|Ô|Õ|?|?|?|?|?|Ø|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?/' => 'O',
		'/ò|ó|ô|õ|?|?|?|?|?|ø|?|º|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?/' => 'o',
		'/?/' => 'P',
		'/?/' => 'p',
		'/?|?|?|?|?/' => 'R',
		'/?|?|?|?|?/' => 'r',
		'/?|?|?|?|Š|?|?/' => 'S',
		'/?|?|?|?|š|?|?|?|?/' => 's',
		'/?|?|?|?|?|?/' => 'T',
		'/?|?|?|?|?/' => 't',
		'/Þ|þ/' => 'th',
		'/Ù|Ú|Û|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?/' => 'U',
		'/ù|ú|û|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?/' => 'u',
		'/Ý|Ÿ|?|?|?|?|?|?|?|?|?/' => 'Y',
		'/ý|ÿ|?|?|?|?|?|?/' => 'y',
		'/?/' => 'V',
		'/?/' => 'v',
		'/?/' => 'W',
		'/?/' => 'w',
		'/?|?|Ž|?|?/' => 'Z',
		'/?|?|ž|?|?/' => 'z',
		'/Æ|?/' => 'AE',
		'/ß/' => 'ss',
		'/?/' => 'IJ',
		'/?/' => 'ij',
		'/Œ/' => 'OE',
		'/ƒ/' => 'f',
		'/?/' => 'ks',
		'/?/' => 'p',
		'/?/' => 'v',
		'/?/' => 'm',
		'/?/' => 'ps',
		'/?/' => 'Yo',
		'/?/' => 'yo',
		'/?/' => 'Ye',
		'/?/' => 'ye',
		'/?/' => 'Yi',
		'/?/' => 'Zh',
		'/?/' => 'zh',
		'/?/' => 'Kh',
		'/?/' => 'kh',
		'/?/' => 'Ts',
		'/?/' => 'ts',
		'/?/' => 'Ch',
		'/?/' => 'ch',
		'/?/' => 'Sh',
		'/?/' => 'sh',
		'/?/' => 'Shch',
		'/?/' => 'shch',
		'/?|?|?|?/' => '',
		'/?/' => 'Yu',
		'/?/' => 'yu',
		'/?/' => 'Ya',
		'/?/' => 'ya'
	);

Modifié par loicbcn (25 Mar 2021 - 14:55)
Bonjour,
Ah ouais, ça fait beaucoup...

Remarque : Les points d'interrogation dans le code, c'est le forum qui les a mis à la place d'autres caractères qu'il ne connaissait pas ?

Mais, mon sujet parlait de désaccentuer, pas d'enlever tous les caractères spéciaux...

Mais merci quand même...
Ah oui, c'est le forum qui ne sait pas retranscrire certains caractères. Je n'avais pas remarqué.
Dans mont éditeur de texte j'ai ça:
upload/1616743854-21765-capturecarac.png

et dans le forum, ça donne ça:

'/Ò|Ó|Ô|Õ|?|?|?|?|?|Ø|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?/' => 'O',
'/ò|ó|ô|õ|?|?|?|?|?|ø|?|º|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?/' => 'o',

Etonnant non ?????
Modifié par loicbcn (26 Mar 2021 - 08:33)
Je penser que c'est une sécurité pour que l'on ne puisse pas insérer n'importe quels caractères... Et n'importe quel code... Mais j'avoue, j'en sais rien... Mais ce serait bête que cela soit juste un oubli...