Compilation failed: nothing to repeat at offset 0

Résolu
IvanTheBlackDog Messages postés 39 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 31 juillet 2006 - 28 juil. 2006 à 12:34
IvanTheBlackDog Messages postés 39 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 31 juillet 2006 - 31 juil. 2006 à 11:29
Salut tout le monde,

J'ai fais un script dans lequel j'utilise la fonction "preg_replace()", mais il me fait une erreur.

Code :

$search = array([mailto:'@â@' '@â@'], [mailto:'@ä@' '@ä@'], [mailto:'@à@' '@à@'], [mailto:'@Â@' '@Â@'], [mailto:'@Ä@' '@Ä@'],  [mailto:'@ç@' '@ç@'], [mailto:'@é@' '@é@'], [mailto:'@ë@' '@ë@'], [mailto:'@ê@' '@ê@'], [mailto:è@' @'], [mailto:'@Ê@' '@Ê@'], [mailto:'@Ë@' '@Ë@'], [mailto:'@î@' '@î@'], [mailto:'@ï@' '@ï@'], [mailto:'@Î@' '@Î@'], [mailto:'@Ï@' '@Ï@'], [mailto:'@ô@' '@ô@'], [mailto:'@ö@' '@ö@'], [mailto:'@Ô@' '@Ô@'], [mailto:'@Ö@' '@Ö@'], [mailto:'@û@' '@û@'], [mailto:'@ü@' '@ü@'], [mailto:'@ù@' '@ù@'], [mailto:'@Û@' '@Û@'], [mailto:'@Ü@' '@Ü@'], '@ @', '@  @', '@\'@'); 
 
$replace = array('a', 'a', 'a', 'A', 'A',  'c', 'e', 'e', 'e', 'e', 'E', 'E', 'i', 'i', 'I', 'I', 'o', 'o', 'O', 'O','u', 'u', 'u', 'U', 'U','-', '-', '',); 

 $nom = mb_convert_case(preg_replace($search, $replace, trim ($_POST['nom'])), MB_CASE_UPPER); 
 $prenom = mb_convert_case(preg_replace($search, $replace, trim($_POST['prenom'])),MB_CASE_TITLE);

Dsl si c'est pas trop lisible (il se peut que le compte n'y ait pas j'en ais retire pour la lisiblite.

Lorsque je lance le formulaire il me met un warning :

Warning : Compilation failed: nothing to repeat at offset 0 in c:\program files\easyphp1-8\www\opera_dev\charte\index.php on line 87

Warning: Compilation failed: nothing to repeat at offset 0 in c:\program files\easyphp1-8\www\opera_dev\charte\index.php on line 88

Les lignes 87 et 88 corresponde à $nom = .... (l. 87) et $prenom=...(l. 88)

dans mon code j'ai verifier il y a le meme nombre d'element dans mes tableaux (42) et je pense que l'erreur vient du "preg_replace()" car je ne l'avais pas avant.

Si quelqu'un a une solution je suis preneur.

______________________
Le Black Dog c'est moi

3 réponses

IvanTheBlackDog Messages postés 39 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 31 juillet 2006
31 juil. 2006 à 11:29
C'est bon j'ai trouvé c'est une question de "" en fait je remplace certain espace par des "-" et il fallait juste que je rajoute un \ ce qui donne "\-".



$search = array( "@â@", "@ä@", "@à@", "@Â@", "@Ä@",  "@ç@", "@é@", "@ë@", "@ê@", "@è@", "@Ê@", "@Ë@", "@î@", "@ï@", "@Î@", "@Ï@", "@ô@", "@ö@", "@Ô@", "@Ö@", "@û@", "@ü@", "@ù@", "@Û@", "@Ü@", "@ @", "@  @", "@\'@", "@\{@", "@\}@", "@\(@", "@\)@", "@\[@", "@\]@", "@\|@", "@\+@", "@\%@", "@\$@", "@\!@", "@\&@");



$replace = array('a', 'a', 'a', 'A', 'A', 'c', 'e', 'e', 'e', 'e', 'E', 'E', 'i', 'i', 'I', 'I', 'o', 'o', 'O', 'O', 'u', 'u', 'u', 'U', 'U', '\-', '\-', '', '', '', '', '', '', '', '', '', '', '', '', '');

Merci pour votre aide
______________________
Le Black Dog c'est moi
3
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
29 juil. 2006 à 09:53
Salut,

$replace = array('a', 'a', 'a', 'A',
'A',  'c', 'e', 'e', 'e', 'e', 'E', 'E', 'i', 'i', 'I', 'I', 'o', 'o',
'O', 'O','u', 'u', 'u', 'U', 'U','-', '-', '' ,)
;

à la fin on voit ça : ,);

seulement après la virgule t'as oublié deux quotes.

ça donne ça :

$replace = array('a', 'a', 'a', 'A',
'A',  'c', 'e', 'e', 'e', 'e', 'E', 'E', 'i', 'i', 'I', 'I', 'o', 'o',
'O', 'O','u', 'u', 'u', 'U', 'U','-', '-', '','')
;

a +

<hr size="2" width="100%" /><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>http://www.vulgarisat%3C/body</li>
0
IvanTheBlackDog Messages postés 39 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 31 juillet 2006
31 juil. 2006 à 10:55
En fait la séquence "$replace" et "$search" ne sont pas complete pour des raisons de lisibilité sinon la version complete donne :

$search = array( "@â@", "@ä@", "@à@", "@Â@", "@Ä@", "àç@",  "@é@", "@ë@", "@ê@", "@è@", "@Ê@", "@Ë@", "@î@", "@ï@", "@Î@", "@Ï@", "@ô@", "@ö@", "@Ô@", "@Ö@", "@û@", "@ü@", "@ù@", "@Û@", "@Ü@", "@ @", "@  @", "@\'@", "@\{@", "@\}@", "@\(@", "@\)@", "@\[@", "@\]@", "@\|@", "@+@", "@%@", "@$@", "@!@", "@&@")

$replace = array('a', 'a', 'a', 'A', 'A', 'c', 'e', 'e', 'e', 'e', 'E', 'E', 'i', 'i', 'I', 'I', 'o', 'o', 'O', 'O', 'u', 'u', 'u', 'U', 'U', '-', '-', '', '', '', '', '', '', '',  '', '', '', '', '', '');

Dans cette version là j'en ais 40 au lieu de 42 comme précisé plus haut parce que j'ai retiré le * et le + parce que j'ai vu sur le net des gens qui avait le meme pb que moi et qui etait du a ces deux symboles la (pas bien gerer). Mais l'inconvenient c'est que moi le pb persiste.

______________________
Le Black Dog c'est moi
0
Rejoignez-nous