PHP сообщает мне, что разделение устарело, какой альтернативный метод мне следует использовать?
Ответы:
explodeэто альтернатива. Однако, если вы хотели разделить регулярное выражение , альтернативой будет preg_split.
splitметод не всегда принимает регулярные выражения. В .NET, Python методы String.Split()/ str.split()принимают только фиксированную буквальную строку как иглу. Таким образом, explodeэто правильно. Для тех, кто пришел из Java, JavaScript, Ruby preg_splitмогут оказаться решением.
splitустарела, поскольку является частью семейства функций, использующих регулярные выражения POSIX; все это семейство устарело в пользу функций PCRE ( preg_*).
Если вам не нужны функции регулярных выражений, то explodeэто очень хороший выбор (и был бы рекомендован, splitдаже если бы они не были устаревшими), если, с другой стороны, вам действительно нужно использовать регулярные выражения, тогда альтернатива PCRE просто preg_split.
preg_split если вам нужно разбить по регулярным выражениям. str_split если нужно разбить по символам. explode если вам нужно разбить что-то простое.Также на будущее, если вы когда-нибудь захотите узнать, что PHP хочет, чтобы вы использовали, если что-то устарело, вы всегда можете проверить функцию в руководстве, и она подскажет вам альтернативы.
Я хочу пояснить, что preg_split();это далеко от этого, но explode();может использоваться так же, какsplit();
Ниже приводится сравнение между split();и explode();использованием
<?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
Вот как мы можем это использовать :)
Вместо этого вы можете использовать более простую функцию preg_match, она лучше и быстрее, чем все остальные.
$var = "<tag>Get this var</tag>";
preg_match("/<tag>(.*)<\/tag>/", $var , $new_var);
echo $new_var['1'];
Выход: Get this var
Да, я бы использовал explode, или вы могли бы использовать:
preg_split
Какой метод рекомендуется использовать в PHP 6. Документация preg_split
Была такая же проблема, но мой код должен работать как на PHP 5, так и на PHP 7 ..
Вот мой фрагмент кода, который решил эту проблему .. Введите дату в формате dmY с одним из разделителей "/. -"
<?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;
}
}
?>
explodeэто не альтернатива, так как он не выполняет ту же функциюsplit, что и: разбивать строку по регулярному выражению . Для этого используйтеpreg_split.