Comment remplacer "create_function"

Résolu
Bonjour,

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

  1. 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 ?
    1. 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]);
      }