Fonction ereg_replace is deprecated

Résolu
nameho -  
 nameho -
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
 
Salut salut,

Quel est le message d'erreur? A quoi ressemble les chaines contenues dans $decoupe?
2
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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
nameho
 
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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
nameho
 
Ca fonctionne c'était sa ! Merci Dal
0
raphael94350 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
modifie ton fichier php.ini la ligne de error_reporting par ça :

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
-2