Fonction ereg_replace is deprecated
Résolu
nameho
-
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:
Merci de votre aide !
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 !
3 réponses
-
Salut salut,
Quel est le message d'erreur? A quoi ressemble les chaines contenues dans $decoupe?
-
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
-
-
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); }-
Tu n'as tenu compte d'aucun de nos commentaires :-(
Modifie comme déjà proposé là :
$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 -
-
-
modifie ton fichier php.ini la ligne de error_reporting par ça :
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED