Bonsoir,
Suite à mon précédent post : http://forum.alsacreations.com/topic.php?fid=17&tid=2170, j'ai essayé d'écrire une fonction php permettant d'éviter l'enregistrement, dans une base de données, de caractères interdits.
Je me suis aidé du script de dotClear d'une part, et de l'excellent article de Laurent Denis : http://openweb.eu.org/articles/caracteres_illegaux/
J'ai utilisé les références numériques plutôt que les entités caractères, est-ce judicieux ?
D'autre part, n'ayant pas l'obligation de tenir compte de ces caractères spéciaux, (sauf peut-être pour le oe du mot oeuf), ne serait-ce pas mieux de les remplacer par des caractères plus classiques ?
Par exemple remplacer l'apostrophe anglaise basse par une apostrophe "classique" ? Ceci pour ne pas remplir la base de références numériques ? (Mais peut-être n'est-ce pas gênant, c'est juste que cela me fait bizarre de voir écrit ces références dans la base ou le code source de la page de mon navigateur)
Voici la fonction en question :
Voyez-vous une amélioration possible ?
Merci !
Modifié par Yhann (05 Mar 2005 - 20:22)
Suite à mon précédent post : http://forum.alsacreations.com/topic.php?fid=17&tid=2170, j'ai essayé d'écrire une fonction php permettant d'éviter l'enregistrement, dans une base de données, de caractères interdits.
Je me suis aidé du script de dotClear d'une part, et de l'excellent article de Laurent Denis : http://openweb.eu.org/articles/caracteres_illegaux/
J'ai utilisé les références numériques plutôt que les entités caractères, est-ce judicieux ?
D'autre part, n'ayant pas l'obligation de tenir compte de ces caractères spéciaux, (sauf peut-être pour le oe du mot oeuf), ne serait-ce pas mieux de les remplacer par des caractères plus classiques ?
Par exemple remplacer l'apostrophe anglaise basse par une apostrophe "classique" ? Ceci pour ne pas remplir la base de références numériques ? (Mais peut-être n'est-ce pas gênant, c'est juste que cela me fait bizarre de voir écrit ces références dans la base ou le code source de la page de mon navigateur)
Voici la fonction en question :
function valid_chars($str)
{
$conv = array(
chr(129) => '',
chr(130) => '‚',
chr(131) => 'ƒ',
chr(132) => '„',
chr(133) => '…',
chr(134) => '†',
chr(135) => '‡',
chr(136) => 'ˆ',
chr(137) => '‰',
chr(138) => 'Š',
chr(139) => '‹',
chr(140) => 'Œ',
chr(141) => '',
chr(142) => '',
chr(143) => '',
chr(144) => '',
chr(145) => '‘',
chr(146) => '’',
chr(147) => '“',
chr(148) => '”',
chr(149) => '•',
chr(150) => '–',
chr(151) => '—',
chr(152) => '˜',
chr(153) => '™',
chr(154) => 'š',
chr(155) => '›',
chr(156) => 'œ',
chr(157) => '',
chr(158) => '',
chr(159) => 'Ÿ'
);
// encodate utf8
// $str = utf8_encode($str);
return str_replace(array_keys($conv),array_values($conv),$str);
}
Voyez-vous une amélioration possible ?
Merci !
Modifié par Yhann (05 Mar 2005 - 20:22)