Preg_replace: Erreur 500 [Résolu]

Messages postés
149
Date d'inscription
vendredi 28 mai 2010
Dernière intervention
21 juillet 2013
- - Dernière réponse : MacGaliver
Messages postés
149
Date d'inscription
vendredi 28 mai 2010
Dernière intervention
21 juillet 2013
- 24 août 2012 à 21:25
Bonjour,

Voilà j'ai un petit problème, en effet avec le code ci-dessous mon serveur retourne l'erreur 500.

Et je ne trouve pas l'erreur.

[> Le but est de remplacer par exemple "\141" par "a", et ainsi de suite.]

<?php
$contenu = "\141\142"
$search = array ('\141','\142','\143','\144','\145','\146','\147','\150','\151','\152','\153','\154','\155','\156','\157','\158','\159','\160','\161','\162','\163','\164','\165','\165','\167','\170','\171','\172');
$replace = array ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
$contenu = preg_replace($search, $replace, $contenu);
echo $contenu;
?>


Merci d'avance
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
12
Date d'inscription
mercredi 18 octobre 2006
Dernière intervention
27 août 2012
3
Merci
Tu dervais essayer pour ton erreur 500.
<?php phpinfo(); ?>

Sauf erreur de ma part, je ne pense que se soit liée à ton code.

Sinon, dans ton code tu as plusieurs erreurs.

D'abord, tu as oublié un ; au début. (T'inquiète ça arrive hyper souvent )

Ensuite, tu veux utiliser de l’expression régulière, il faut donc penser aux délimiteur.
les fameux / exemple : $v = array('/\141/', ...

Ensuite, tu traites des <>.
Donc de préférence, il vaux mieux avoir la même taille.

Voilà.

2 exemples. Il remplisse la même fonction

Exemple 1 : Avec RegEx
<?php
  $GlobalTime = microtime(true);
/* Déclaration constant */

$A = array ('/\141/', '/\142/', '/\143/','/\144/','/\145/','/\146/','/\147/','/\150/','/\151/','/\152/','/\153/','/\154/','/\155/','/\156/','/\157/','/\158/','/\159/','/\160/','/\161/','/\162/','/\163/','/\164/','/\165/','/\165/','/\167/','/\170/', '/\171/');
$B = array ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');

$Sample = "\141\142\141\142\141\142\141\142\141\142\141\142\141\142\141\142\141\142\141\142\141\142\141\142\141\142\141\142";
$Contenu = preg_replace($A, $B, $Sample);

echo $Contenu;

 $TimeOut 	  = microtime(true);
 $GlobalDuree  = ($TimeOut-$GlobalTime) * 100;
 echo "Temps execution : $GlobalDuree ms";


?>


Exemple 2 : sans RegEx

<?php
  $GlobalTime = microtime(true);
/* Déclaration constant */
//			  a		 b		c		d	   e	  f		 g		h	   i	  j		 k		l	   m	  n		o		p	  q		 r	     s		t	   u	  v		w		x	   y	  z		 
$A = array ('\141','\142','\143','\144','\145','\146','\147','\150','\151','\152','\153','\154','\155','\156','\157','\158','\159','\160','\161','\162','\163','\164','\165','\165','\167','\170');
$B = array ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  
/* function de conversion */
function Decode($Sample, $In, $Out)
{
   // Controle de table
   $IsArray_In  = is_array($In);
   $IsArray_Out = is_array($Out);
   $Count_In    = count($In);
   $Count_Out   = count($Out);
   
   if (($IsArray_In&&$IsArray_Out)&&($Count_In==$Count_Out))
   {
     $Result = $Sample;
     while (list($Index, $Search) = each($In))
     {
       $Result = str_replace($A, $B[$Index], $Result);
     }
    }
else
{
  $Erreur = "";
  $Erreur .= "Erreur de table : \n ";
  $Erreur .= ($Count_In<>$Count_Out)?"\tNombre d'éléments diférents \n":"";
  $Erreur .= (!$IsArray_In)?"\tVariable d'entree n'est pas une variable \n":"";
  $Erreur .= (!$IsArray_Out)?"\tVariable de sortie n'est pas une variable \n":"";
  $Erreur .= "

";
  die($Erreur);
}
  return $Result;
}

$Sample = "\141\142\141\142\141\142\141\142\141\142\141\142\141\142\141\142\141\142\141\142\141\142\141\142\141\142\141\142";
$Contenu = Decode($Sample, $A, $B);

echo $Contenu;

 $TimeOut 	  = microtime(true);
 $GlobalDuree  = ($TimeOut-$GlobalTime) * 100;
 echo "Temps execution : $GlobalDuree ms";

?>

Merci Iwoks 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Iwoks
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Dernière intervention
5 juin 2013
3
Merci
Salut,

En plus du point virgule manquant déjà signalé, tu n'aurais pas du utiliser preg_replace() mais str_replace() :
<?php

$contenu = "\141\142";
$search = array ('\141','\142','\143','\144','\145','\146','\147','\150','\151','\152','\153','\154','\155','\156','\157','\158','\159','\160','\161','\162'\
,'\163','\164','\165','\165','\167','\170','\171','\172');
$replace = array ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
$contenu = str_replace($search, $replace, $contenu);
echo $contenu;


Et en simplifiant un peu tout ça :
<?php

$ctn = "\141\142";
echo $ctn;

Et le pire c'est que ça marche bien, étant entre doubles quotes c'est interprété :)

Merci TychoBrahe 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de TychoBrahe
Messages postés
149
Date d'inscription
vendredi 28 mai 2010
Dernière intervention
21 juillet 2013
0
Merci
Ok, merci.

J'ai utilisé la méthode de TychoBrahe et j'ai rajouté les délimiteurs comme Iwoks me l'a dit.

Et ça donne ça sans soucis:

<?php

$contenu = "\141\142";
$search = array ('/\141/','/\142/','/\143/','/\144/','/\145/','/\146/','/\147/','/\150/','/\151/','/\152/','/\153/','/\154/','/\155/','/\156/','/\157/','/\158/','/\159/','/\160/','/\161/','/\162/','/\163/','/\164/','/\165/','/\165/','/\167/','/\170/','/\171/','/\172/');
$replace = array ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
$contenu = str_replace($search, $replace, $contenu);
echo $contenu; // ici on aura >> ab <<

?>


Merci à vous deux.
Commenter la réponse de MacGaliver
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Dernière intervention
5 juin 2013
0
Merci
Rofl, t'as tout bien compris :p

Les délimiteurs, c'est uniquement pour les regexp, dans ce que je t'ai mis ils ne servent strictement à rien. Si tu vois le bon résultat c'est uniquement parce que ta chaîne de caractère n'a pas bougée d'un pouce, comme indiqué à al fin de mon post.
Commenter la réponse de TychoBrahe
Messages postés
149
Date d'inscription
vendredi 28 mai 2010
Dernière intervention
21 juillet 2013
0
Merci
Oui, mais sans les limiteur avec mon code php avec str_replace le serveur me dit " configuration incorrecte".

Bonne soirée
Commenter la réponse de MacGaliver

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.