PHP mówi mi, że podział jest przestarzały, jaką alternatywną metodę powinienem użyć?
92
explode
jest alternatywą. Jeśli jednak zamierzałeś podzielić wyrażenie regularne , alternatywą jest preg_split
zamiast tego.
explode
nie jest alternatywą, ponieważ nie spełnia tej samej funkcji, cosplit
, to znaczy: dzielenia łańcucha za pomocą wyrażenia regularnego . W tym celu użyjpreg_split
.split
metoda nie zawsze akceptuje wyrażenia regularne. W .NET i PythonieString.Split()
/str.split()
metody akceptują tylko ustalony, dosłowny ciąg znaków jako igłę. Tak więcexplode
jest poprawne. Dla tych, którzy pochodzą z Java, JavaScript, Ruby,preg_split
może okazać się rozwiązaniem.split
jest przestarzały, ponieważ jest częścią rodziny funkcji, które używają wyrażeń regularnych POSIX; że cała rodzina jest przestarzała na rzecz funkcji PCRE (preg_*
).Jeśli nie potrzebujesz funkcji wyrażeń regularnych, to
explode
jest to bardzo dobry wybór (i byłby zalecany,split
nawet gdyby nie były przestarzałe), jeśli z drugiej strony musisz użyć wyrażeń regularnych, to alternatywa PCRE jest po prostupreg_split
.źródło
preg_split
jeśli chcesz podzielić za pomocą wyrażeń regularnych.str_split
jeśli chcesz podzielić według znaków.explode
jeśli potrzebujesz podzielić na coś prostego.Również na przyszłość, jeśli kiedykolwiek będziesz chciał wiedzieć, czego PHP chce, abyś używał, jeśli coś jest przestarzałe, zawsze możesz sprawdzić funkcję w instrukcji, która podpowie Ci alternatywy.
źródło
Chcę tutaj wyjaśnić, że
preg_split();
jest od tego daleko, aleexplode();
można go używać w podobny sposób, jaksplit();
Poniżej znajduje się porównanie
split();
iexplode();
użycieJak użyto split ()
<?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
Jak można użyć funkcji explode ()
<?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
Oto jak możemy to wykorzystać :)
źródło
Możesz zamiast tego użyć łatwiejszej funkcji preg_match, jest lepsza i szybsza niż wszystkie inne.
$var = "<tag>Get this var</tag>"; preg_match("/<tag>(.*)<\/tag>/", $var , $new_var); echo $new_var['1'];
Wynik:
Get this var
źródło
Tak, użyłbym eksplozji lub możesz użyć:
preg_split
Która metoda jest zalecana w PHP 6. preg_split Documentation
źródło
Jeśli chcesz podzielić ciąg na słowa, możesz użyć funkcji explode () lub str_word_count ().
źródło
Wystąpił ten sam problem, ale mój kod musi działać zarówno na PHP 5, jak i PHP 7.
Oto mój fragment kodu, który rozwiązał ten problem. Wprowadź datę w formacie dmY z jednym z ograniczników „/. -”
<?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; } } ?>
źródło