Alternative à PHP split?

92

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

igorgue
la source

Réponses:

131

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

Sarfraz
la source
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.

salathe
la source
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.

tplaner
la source
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 :)

i.jolly
la source
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

André Cotelo
la source
1

Oui, j'utiliserais exploser ou vous pourriez utiliser:

preg_split

Quelle est la méthode conseillée avec PHP 6. Documentation preg_split

Solutions Addo
la source
0

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

Alexandrw
la source
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;
  }
}
?>
Ferdinand
la source