Fonction ereg_replace is deprecated

Résolu/Fermé
nameho - Modifié par nameho le 10/04/2013 à 10:27
 nameho - 11 avril 2013 à 11:19
Bonjour,

J'ai un problème de fonction, j'ai bien lu pourquoi etc...

Mais j'ai du mal avec la syntaxe du preg_replace

voici mon code:

       
$decoupe[$i] = preg_replace("([A-Za-z0-9])([^ A-Za-z0-9])", "\\1 \\2", $decoupe[$i]);       
$decoupe[$i] = preg_replace("([^ A-Za-z0-9])([A-Za-z0-9])", "\\1 \\2", $decoupe[$i]);    


Merci de votre aide !


A voir également:

3 réponses

Utilisateur anonyme
10 avril 2013 à 11:52
Salut salut,

Quel est le message d'erreur? A quoi ressemble les chaines contenues dans $decoupe?
2
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
10 avril 2013 à 12:56
j'ajouterai aussi : donne des exemples de ce que tu as dans $decoupe en entrée et de ce que tu veux obtenir en sortie.

sinon : comme illustré dans les exemples sur https://www.php.net/manual/fr/function.preg-replace.php l'expression (1er paramètre) doit commencer et se terminer par un slash : /

par ailleurs, dans le 2ème paramètre, il est mieux d'écrire $1 et $2 au lieu de \\1 et \\2


Dal
0
Voici mon code :

<?php
function MiseEnForme2($param) {
  $lgmax = 20;
  $decoupe = explode(" ",$param);
  $j = 0; 
  for ($i = 0; $i < count($decoupe); $i++) {
    if ($j < strlen($decoupe[$i])) { $j = strlen($decoupe[$i]); }    
  }
  if ($j < $lgmax) { return $param; }
  for ($i = 0; $i < count($decoupe); $i++) {
    if ($lgmax < strlen($decoupe[$i])) { 
      $decoupe[$i] = substr($decoupe[$i], 0, $lgmax) . " " . MiseEnForme(substr($decoupe[$i], $lgmax, strlen($decoupe[$i])));
    }    
    if ($i == 0) { $result = $decoupe[$i]; } else { $result .= " " . $decoupe[$i]; }
  }  
  return $result;
}

function MiseEnForme($param) {
  $lgmax = 20;
  if (strlen($param) < $lgmax) { return $param; }
  $decoupe = explode(" ",$param);
  $j = 0; 
  for ($i = 0; $i < count($decoupe); $i++) {
    if ($j < strlen($decoupe[$i])) { $j = strlen($decoupe[$i]); }    
  }
  if ($j < $lgmax) { return $param; }
  for ($i = 0; $i < count($decoupe); $i++) {
    if ($lgmax < strlen($decoupe[$i])) { 
      $decoupe[$i] = ereg_replace("([A-Za-z0-9])([^ A-Za-z0-9])", "\\1 \\2", $decoupe[$i]);      
      $decoupe[$i] = ereg_replace("([^ A-Za-z0-9])([A-Za-z0-9])", "\\1 \\2", $decoupe[$i]);      
    }
    if ($i == 0) { $result = $decoupe[$i]; } else { $result .= " " . $decoupe[$i]; }
  } 
return MiseEnForme2($result);
}
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 11/04/2013 à 10:43
Tu n'as tenu compte d'aucun de nos commentaires :-(

Modifie comme déjà proposé :

$decoupe[$i] = preg_replace("/([A-Za-z0-9])([^ A-Za-z0-9])/", "$1 $2", $decoupe[$i]);         
$decoupe[$i] = preg_replace("/([^ A-Za-z0-9])([A-Za-z0-9])/", "$1 $2", $decoupe[$i]);  

Comme tu ne donnes pas d'exemples de ce qui doit figurer dans $decoupe, ni d'exemple de ce que tu attends du résultat de preg_replace, on ne peut pas te dire si tes regex font ce que tu penses qu'elles font.

Pour moi, cette combinaison de regex se contente d'insérer des espaces pour séparer les caractères alphanumériques ASCII des autres.

Par exemple :

https://forums.commentcamarche.net/forum/affich-27559890-fonction-ereg-replace-is-deprecated 

devient

http :// www . commentcamarche . net / forum / affich - 27559890 - fonction - ereg - replace - is - deprecated

Si tu veux faire autre chose, dis le, stp.


Dal
0
Ca fonctionne c'était sa ! Merci Dal
0
raphael94350 Messages postés 10 Date d'inscription mardi 9 avril 2013 Statut Membre Dernière intervention 10 avril 2013
10 avril 2013 à 12:37
modifie ton fichier php.ini la ligne de error_reporting par ça :

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
-2