Des livres incontournables pour tout maîtriser

  • CSS2
  • Réussir son site web avec XHTML et CSS
  • PHP 5 avancé
  • Memento CSS
  • Memento XHTML
  • Ergonomie web
  • Bien rédiger pour le web
Auteur
cvneo
# 04 Jul 2009 - 15:48:01
Citer
45 Posts
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.

^
Heyoan
# 04 Jul 2009 - 16:29:10
Citer
Modérateur
7077 Posts
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)

^
Powered by Phedio v3.8.6 beta in 15.1 ms © dew