PHP Split Alternative?

92

PHP sagt mir, dass Split veraltet ist. Welche alternative Methode sollte ich verwenden?

igorgue
quelle

Antworten:

131

explodeist eine Alternative. Wenn Sie jedoch einen regulären Ausdruck aufteilen möchten , ist die Alternative preg_splitstattdessen.

Sarfraz
quelle
15
Ich bin anderer Meinung - explodeist nicht die Alternative, da es nicht die gleiche Funktion ausführt wie split: einen String durch einen regulären Ausdruck zu teilen . Verwenden Sie zu diesem Zweck preg_split.
Nickf
1
@nickf: Das ist richtig richtig, ich hätte das anfangs hinzufügen sollen. Danke
Sarfraz
In verschiedenen Sprachen splitakzeptiert die Methode nicht immer reguläre Ausdrücke. In .NET, Python, akzeptieren die String.Split()/ str.split()-Methoden nur eine feste Literalzeichenfolge als Nadel. Somit explodeist richtig. Für diejenigen, die aus Java kommen, könnte JavaScript, Ruby, preg_splitdie Lösung sein.
Wiktor Stribiżew
Es ist kompatibel mit String.Split () von Visual Basic .NET. Nizza
Md Ashraful Islam
22

splitist veraltet, da es Teil der Funktionsfamilie ist, die reguläre POSIX-Ausdrücke verwendet. Diese ganze Familie wird zugunsten der PCRE ( preg_*) - Funktionen abgelehnt .

Wenn Sie die Funktionalität für reguläre Ausdrücke nicht benötigen, explodeist dies eine sehr gute Wahl (und wäre empfohlen worden, splitselbst wenn dies nicht veraltet wäre). Wenn Sie andererseits reguläre Ausdrücke verwenden müssen, ist die PCRE-Alternative einfach preg_split.

salathe
quelle
16
  • preg_split wenn Sie durch reguläre Ausdrücke teilen müssen.
  • str_split wenn Sie nach Zeichen teilen müssen.
  • explode wenn Sie durch etwas Einfaches trennen müssen.

Auch für die Zukunft können Sie, wenn Sie jemals wissen möchten, was PHP verwenden soll, wenn etwas veraltet ist, die Funktion im Handbuch jederzeit überprüfen und Ihnen Alternativen aufzeigen.

Planer
quelle
7

Ich möchte hier klarstellen, dass dies preg_split();weit davon entfernt explode();ist, aber auf ähnliche Weise wie verwendet werden kannsplit();

Es folgt der Vergleich zwischen split();und explode();Verwendung

Wie wurde split () verwendet?

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

Wie explode () verwendet werden kann

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

Hier ist, wie wir es verwenden können :)

i.jolly
quelle
2

Sie können stattdessen die einfachere Funktion preg_match verwenden. Sie ist besser und schneller als alle anderen.

$var = "<tag>Get this var</tag>";
preg_match("/<tag>(.*)<\/tag>/", $var , $new_var);
echo $new_var['1']; 

Ausgabe: Get this var

Andre Cotelo
quelle
1

Ja, ich würde explodieren verwenden oder Sie könnten verwenden:

preg_split

Welches ist die empfohlene Methode mit PHP 6. preg_split Documentation

Addo-Lösungen
quelle
0

Wenn Sie eine Zeichenfolge in Wörter aufteilen möchten, können Sie explode () oder str_word_count () verwenden.

Alexandrw
quelle
0

Hatte das gleiche Problem, aber mein Code muss sowohl auf PHP 5 als auch auf PHP 7 funktionieren.

Hier ist mein Code, der dieses Problem gelöst hat. Geben Sie ein Datum im dmY-Format mit einem der Trennzeichen "/. -" ein.

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