Besoin d'aide avec preg_replace
Pitouli
Messages postés
62
Statut
Membre
-
Pitouli Messages postés 62 Statut Membre -
Pitouli Messages postés 62 Statut Membre -
Bonjour !
J'ai une fonction de "nettoyage" qui me cause un petit souci :
Et si je fais ceci :
Le problème est que, au lieu d'avoir "ae", j'ai "aaae".
?!
J'ai fais un petit test : j'ai changé l'ordre dans mes deux arrays de cette manière :
(le groupe des E est avant celui des A)
Et cette fois si, quand je fais
J'obtiens "eaee" au lieu de "ae".
Il semblerait donc que la lettre du premier "groupe" de l'array se mete avant chacun des caractères nettoyés. Auriez vous une solution à ce petit problème ?
Merci beaucoup,
Pitouli
J'ai une fonction de "nettoyage" qui me cause un petit souci :
function nettoyer($in) {
$search = array ('@[áãàâäÂÄ]@i','@[éèêëÊË]@i','@[ìíiiîïÎÏ]@i','@[úûùüÛÜ]@i','@[òóõôöÔÖ]@i','@[ñÑ]@i','@[ýÿÝ]@i','@[ç]@i','@[ ]@i','@[^a-zA-Z0-9_.]@');
$replace = array ('a','e','i','u','o','n','y','c','_','');
return preg_replace($search, $replace, $in);
}
Et si je fais ceci :
<?=nettoyer('àé')?>
Le problème est que, au lieu d'avoir "ae", j'ai "aaae".
?!
J'ai fais un petit test : j'ai changé l'ordre dans mes deux arrays de cette manière :
function nettoyer($in) {
$search = array ('@[éèêëÊË]@i','@[áãàâäÂÄ]@i','@[ìíiiîïÎÏ]@i','@[úûùüÛÜ]@i','@[òóõôöÔÖ]@i','@[ñÑ]@i','@[ýÿÝ]@i','@[ç]@i','@[ ]@i','@[^a-zA-Z0-9_.]@');
$replace = array ('e','a','i','u','o','n','y','c','_','');
return preg_replace($search, $replace, $in);
}
(le groupe des E est avant celui des A)
Et cette fois si, quand je fais
<?=nettoyer('àé')?>
J'obtiens "eaee" au lieu de "ae".
Il semblerait donc que la lettre du premier "groupe" de l'array se mete avant chacun des caractères nettoyés. Auriez vous une solution à ce petit problème ?
Merci beaucoup,
Pitouli
4 réponses
salut,
j'ai pas essayé ton code mais le probleme doit venir de là :
('@[éèêëÊË]@i','@[áãàâäÂÄ]@i','@[ìíiiîïÎÏ]@i','@[úûùüÛÜ]@i','@[òóõôöÔÖ]@i','@[ñÑ]@i','@[ýÿÝ]@i','@[ç]@i','@[ ]@i','@[^a-zA-Z0-9_.]@');
pourquoi remplacer "" par quelquechose.
++
j'essai ton code et ten dit plus.
j'ai pas essayé ton code mais le probleme doit venir de là :
('@[éèêëÊË]@i','@[áãàâäÂÄ]@i','@[ìíiiîïÎÏ]@i','@[úûùüÛÜ]@i','@[òóõôöÔÖ]@i','@[ñÑ]@i','@[ýÿÝ]@i','@[ç]@i','@[ ]@i','@[^a-zA-Z0-9_.]@');
pourquoi remplacer "" par quelquechose.
++
j'essai ton code et ten dit plus.
<?
function nettoyer($in) {
$search = array ('@[áãàâäÂÄ]@i','@[éèêëÊË]@i','@[ìíiiîïÎÏ]@i','@[úûùüÛÜ]@i','@[òóõôöÔÖ]@i','@[ñÑ]@i','@[ýÿÝ]@i','@[ç]@i','@[ ]@i','@[^a-zA-Z0-9_.]@');
$replace = array ('a','e','i','u','o','n','y','c','_','');
return preg_replace($search, $replace, $in);
}
?>
<?=nettoyer('àéàâäÿ')?>
résultat : aeaaay
je viens de tester ça, ça marche, et cela est l'original de ton code.
regarde autour de php
++
Joris
function nettoyer($in) {
$search = array ('@[áãàâäÂÄ]@i','@[éèêëÊË]@i','@[ìíiiîïÎÏ]@i','@[úûùüÛÜ]@i','@[òóõôöÔÖ]@i','@[ñÑ]@i','@[ýÿÝ]@i','@[ç]@i','@[ ]@i','@[^a-zA-Z0-9_.]@');
$replace = array ('a','e','i','u','o','n','y','c','_','');
return preg_replace($search, $replace, $in);
}
?>
<?=nettoyer('àéàâäÿ')?>
résultat : aeaaay
je viens de tester ça, ça marche, et cela est l'original de ton code.
regarde autour de php
++
Joris
Diantre, c'est à ni rien comprendre !
Je te donne le code de la page entière :
La fonction est dans le fichier param.php qui est inclus au début.
Merci de t'intéresser à mon cas en tout cas !
Pitouli
Je te donne le code de la page entière :
<?php require('contenu_php/param.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Pictii</title>
<link href="/contenu_site/template/style.css" rel="stylesheet" type="text/css" />
<?php require('contenu_site/js/js.php'); ?>
</head>
<body>
<?php require('contenu_php/includes/include_menu.php'); ?>
<div id="site">
<div id="titre"><p><img src="/contenu_site/template/images/trans.gif" width="300" height="80" alt="Pictii" class="image_titre" /></p></div>
<div id="header">
<div id="header_left"></div>
<div id="header_middle">
<div id="contenu_header">
</div>
</div>
<div id="header_right"></div>
</div>
<div id="corps">
<div id="contenu_corps">
<p><?=nettoyer('é')?></p>
</div>
</div>
<div id="footer">
<p>By Pitouli - valide <a href="http://validator.w3.org/check?uri=referer">XHTML 1.1</a></p>
</div>
</div>
</body>
</html>
La fonction est dans le fichier param.php qui est inclus au début.
Merci de t'intéresser à mon cas en tout cas !
Pitouli
Hum, j'ai fait plus simple pour tester :
Ben, ça marche pô : ça affiche "aeaeaaaaacaaac"
Donc apparemment, ça viendrait du serveur ? Mais qu'est ce qui pourrait faire planter un si simple preg_replace ?
Pitouli
PS: encore merci de ton aide !
<?php
function nettoyer($in) {
$search = array ('@[áãàâäÂÄ]@i','@[éèêëÊË]@i','@[ìíiiîïÎÏ]@i','@[úûùüÛÜ]@i','@[òóõôöÔÖ]@i','@[ñÑ]@i','@[ýÿÝ]@i','@[ç]@i','@[ ]@i','@[^a-zA-Z0-9_.]@');
$replace = array ('a','e','i','u','o','n','y','c','_','');
return preg_replace($search, $replace, $in);
}
echo nettoyer('éèààçàç');
?>
Ben, ça marche pô : ça affiche "aeaeaaaaacaaac"
Donc apparemment, ça viendrait du serveur ? Mais qu'est ce qui pourrait faire planter un si simple preg_replace ?
Pitouli
PS: encore merci de ton aide !