Альтернатива разделения PHP?

92

PHP сообщает мне, что разделение устарело, какой альтернативный метод мне следует использовать?

игорг
источник

Ответы:

131

explodeэто альтернатива. Однако, если вы хотели разделить регулярное выражение , альтернативой будет preg_split.

Сарфраз
источник
15
Я не согласен - explodeэто не альтернатива, так как он не выполняет ту же функцию split, что и: разбивать строку по регулярному выражению . Для этого используйте preg_split.
nickf
1
@nickf: Это правильно, я должен был добавить это изначально. Спасибо
Sarfraz
На разных языках splitметод не всегда принимает регулярные выражения. В .NET, Python методы String.Split()/ str.split()принимают только фиксированную буквальную строку как иглу. Таким образом, explodeэто правильно. Для тех, кто пришел из Java, JavaScript, Ruby preg_splitмогут оказаться решением.
Wiktor Stribiew
Он совместим с Visual Basic .NET String.Split (). Ницца
Md Ashraful Islam
22

splitустарела, поскольку является частью семейства функций, использующих регулярные выражения POSIX; все это семейство устарело в пользу функций PCRE ( preg_*).

Если вам не нужны функции регулярных выражений, то explodeэто очень хороший выбор (и был бы рекомендован, splitдаже если бы они не были устаревшими), если, с другой стороны, вам действительно нужно использовать регулярные выражения, тогда альтернатива PCRE просто preg_split.

салате
источник
16
  • preg_split если вам нужно разбить по регулярным выражениям.
  • str_split если нужно разбить по символам.
  • explode если вам нужно разбить что-то простое.

Также на будущее, если вы когда-нибудь захотите узнать, что PHP хочет, чтобы вы использовали, если что-то устарело, вы всегда можете проверить функцию в руководстве, и она подскажет вам альтернативы.

tplaner
источник
7

Я хочу пояснить, что preg_split();это далеко от этого, но explode();может использоваться так же, какsplit();

Ниже приводится сравнение между split();и explode();использованием

Как использовался 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

Как можно использовать 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

Вот как мы можем это использовать :)

i.jolly
источник
2

Вместо этого вы можете использовать более простую функцию preg_match, она лучше и быстрее, чем все остальные.

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

Выход: Get this var

Андре Котело
источник
1

Да, я бы использовал explode, или вы могли бы использовать:

preg_split

Какой метод рекомендуется использовать в PHP 6. Документация preg_split

Решения Addo
источник
0

Если вы хотите разбить строку на слова, вы можете использовать explode () или str_word_count ().

Alexandrw
источник
0

Была такая же проблема, но мой код должен работать как на 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;
  }
}
?>
Фердинанд
источник