Alternative à PHP split?


92

PHP me dit que le fractionnement est obsolète, quelle est la méthode alternative que je devrais utiliser?

Réponses:


131

explodeest une alternative. Cependant, si vous vouliez diviser par une expression régulière , l'alternative est à la preg_splitplace.


15
Je ne suis pas d'accord - exploden'est pas l'alternative, car elle n'effectue pas la même fonction que split, c'est-à-dire: diviser une chaîne par une expression régulière . Pour cela, utilisez preg_split.
nickf

1
@nickf: C'est justement souligné, j'aurais dû l'ajouter au départ. Merci
Sarfraz

Dans diverses langues, la 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.
Wiktor Stribiżew

Il est compatible avec String.Split () de Visual Basic .NET. Nice
Md Ashraful Islam

22

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.


16
  • 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.


7

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

Comment split () a-t-il été utilisé

<?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

Comment explode () peut être utilisé

<?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 :)


2

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



0

Si vous souhaitez diviser une chaîne en mots, vous pouvez utiliser explode () ou str_word_count ().


0

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;
  }
}
?>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.