8791 sujets

Développement web côté serveur, CMS

Bonjour,

sur mon site je gère actuellement le formatage de nom de fichier pour qu'il ne soit composer que par des chiffres et des lettres :

$chaine = eregi_replace("[^A-Z0-9]", $RemplacePar, $chaine);

seulement maintenant je voudrais ajouter le russe et la le ereg ne fonctionne plus car il ne reconnait pas les caractères nom latin.

Avez vous une idée pour contourné le soucis ?

Merci d'avance pour votre aide précieuse.
Salut,

déjà tu devrais plutôt utiliser les fonctions PCRE (preg_replace) que POSIX (eregi_replace) car elles sont plus puissantes et plus rapides : cf. cet article.
$chaine=strtolower(preg_replace('/[^a-zA-Z0-9]/', '', $chaine));

Ensuite, et si besoin est, il devrait suffire d'utiliser setlocale.


Edit: après relecture de ton post je me demande si tu ne parles pas en fait de translittération auquel cas il faudrait tout d'abord renseigner une table de correspondance (en te basant par exemple sur cet article) puis un simple strstr :
<?php
function string_to_filename($chaine) {
	$ru_to_fr = array(
		'&#1040;' => 'a',
		'&#1072;' => 'a',
		'&#1041;' => 'b',
		'&#1073;' => 'b',
		'&#1042;' => 'v',
		'&#1074;' => 'v'
	);
	$chaine = strtr($chaine, $ru_to_fr);
    return strtolower(preg_replace('/[^a-zA-Z0-9]/', '', $chaine));
}

echo string_to_filename("&#1040;&#1072;&#1041;&#1073;&#1042;&#1074;333");
?>


Edit2: les caractères cyrilliques ne passent pas donc en image :
upload/8634-rutofr.jpg
Modifié par Heyoan (04 Jul 2009 - 18:13)