PHP me dit que le fractionnement est obsolète, quelle est la méthode alternative que je devrais utiliser?
Réponses:
explodeest une alternative. Cependant, si vous vouliez diviser par une expression régulière , l'alternative est à la preg_splitplace.
splitméthode n'accepte pas toujours les expressions régulières. Dans .NET, Python, les méthodes String.Split()/ str.split()n'acceptent qu'une chaîne littérale fixe comme aiguille. Ainsi, explodeest correct. Pour ceux qui viennent de Java, JavaScript, Ruby, preg_splitpourrait s'avérer la solution.
splitest déconseillée car elle fait partie de la famille des fonctions qui utilisent les expressions régulières POSIX; cette famille entière est obsolète au profit des preg_*fonctions PCRE ( ).
Si vous n'avez pas besoin de la fonctionnalité d'expression régulière, explodec'est un très bon choix (et aurait été recommandé splitmême si cela n'était pas obsolète), si d'un autre côté vous devez utiliser des expressions régulières, l'alternative PCRE est tout simplement preg_split.
preg_split si vous avez besoin de fractionner par des expressions régulières. str_split si vous devez diviser par caractères. explode si vous avez besoin de diviser par quelque chose de simple.Aussi pour l'avenir, si vous voulez savoir ce que PHP veut que vous utilisiez si quelque chose est obsolète, vous pouvez toujours consulter la fonction dans le manuel et il vous indiquera des alternatives.
Je veux clarifier ici qui preg_split();est loin de là mais explode();peut être utilisé de la même manière quesplit();
Voici la comparaison entre split();et l' explode();utilisation
<?php
$date = "04/30/1973";
list($month, $day, $year) = split('[/.-]', $date);
echo $month; // foo
echo $day; // *
echo $year;
?>
URL: http://php.net/manual/en/function.split.php
<?php
$data = "04/30/1973";
list($month, $day, $year) = explode("/", $data);
echo $month; // foo
echo $day; // *
echo $year;
?>
URL: http://php.net/manual/en/function.explode.php
Voici comment nous pouvons l'utiliser :)
Vous pouvez utiliser la fonction plus simple preg_match à la place, elle est meilleure et plus rapide que toutes les autres.
$var = "<tag>Get this var</tag>";
preg_match("/<tag>(.*)<\/tag>/", $var , $new_var);
echo $new_var['1'];
Production: Get this var
Oui, j'utiliserais exploser ou vous pourriez utiliser:
preg_split
Quelle est la méthode conseillée avec PHP 6. Documentation preg_split
J'ai eu le même problème, mais mon code doit fonctionner à la fois sur PHP 5 et PHP 7.
Voici mon morceau de code, qui a résolu ce problème .. Entrez une date au format dmY avec l'un des délimiteurs "/. -"
<?php
function DateToEN($date){
if ($date!=""){
list($d, $m, $y) = function_exists("split") ? split("[/.-]", $date) : preg_split("/[\/\.\-]+/", $date);
return $y."-".$m."-".$d;
}else{
return false;
}
}
?>
exploden'est pas l'alternative, car elle n'effectue pas la même fonction quesplit, c'est-à-dire: diviser une chaîne par une expression régulière . Pour cela, utilisezpreg_split.