Comment remplacer "create_function"
Résolu
mpoi
-
mpoi -
mpoi -
Bonjour,
J'essaye de modifier un script qui ajoute des videos grace a un BBCode mais le script utilise "create_function" qui n'est plus valable depuis php 7.2 sauriez vous comment remplacer "create_function" svp ?
Configuration: Windows / Firefox 95.0
J'essaye de modifier un script qui ajoute des videos grace a un BBCode mais le script utilise "create_function" qui n'est plus valable depuis php 7.2 sauriez vous comment remplacer "create_function" svp ?
if (preg_match($value[0], $link, $matches))
{
$id_video=$matches[1];
return preg_replace_callback('/{.*?}/', create_function('$matches', 'switch (true){
case preg_match("/\{ID_VIDEO\}/", $matches[0]):
return "'.$id_video.'";
break;
case preg_match("/\{LINK\}/", $matches[0]):
return "'.$link.'";
break;
case preg_match("/\{DOWNLOAD(.*?)%(.*?)%(.*?)\}/", $matches[0], $matches2):
if (empty($matches2[1])) $matches2[1]="'.$link.'";
preg_match($matches2[2], file_get_contents(str_replace(" ","+",$matches2[1])), $matches3);
if (empty($matches2[3])){
return $matches3[1];
}else{
$t=$matches3[1];
foreach(explode("|", $matches2[3]) as $e){
eval(\'$t=\'.$e.\'($t);\');
}
return $t;
}
break;
}
return $matches[0];'), $value[1]);
}
4 réponses
Bonjour,
Il faut remplacer l'utilisation de la fonction create_function() par une fonction anonyme depuis php 7.2.
Plus d'info sur la doc : https://www.php.net/manual/fr/functions.anonymous.php
Tu peux aussi trouver un exemple de remplacement similaire ici : https://stackoverflow.com/questions/48161526/php-7-2-function-create-function-is-deprecated
Bonne journée,
Il faut remplacer l'utilisation de la fonction create_function() par une fonction anonyme depuis php 7.2.
Plus d'info sur la doc : https://www.php.net/manual/fr/functions.anonymous.php
Tu peux aussi trouver un exemple de remplacement similaire ici : https://stackoverflow.com/questions/48161526/php-7-2-function-create-function-is-deprecated
Bonne journée,
Merci pour ta réponse
J'ai bien vu les liens mais malheureusement je n'arrive pas a faire fonctionner dans le code ci dessus
peu tu me dire comment tu modifierais le code ci-dessus svp ?
J'ai bien vu les liens mais malheureusement je n'arrive pas a faire fonctionner dans le code ci dessus
peu tu me dire comment tu modifierais le code ci-dessus svp ?
Si je me trompe pas, ca devrait donner quelque chose comme ceci :
if (preg_match($value[0], $link, $matches))
{
$id_video=$matches[1];
return preg_replace_callback('/{.*?}/', function($matches) use ($id_video, $link) {
switch (true){
case preg_match("/\{ID_VIDEO\}/", $matches[0]):
return $id_video;
break;
case preg_match("/\{LINK\}/", $matches[0]):
return $link;
break;
case preg_match("/\{DOWNLOAD(.*?)%(.*?)%(.*?)\}/", $matches[0], $matches2):
if (empty($matches2[1])) $matches2[1]=$link;
preg_match($matches2[2], file_get_contents(str_replace(" ","+",$matches2[1])), $matches3);
if (empty($matches2[3])){
return $matches3[1];
}else{
$t=$matches3[1];
foreach(explode("|", $matches2[3]) as $e){
eval('$t='.$e.'($t);');
}
return $t;
}
break;
}
return $matches[0];
}, $value[1]);
}