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


92

PHP каже мені, що розділення застаріло, який альтернативний метод я повинен використовувати?

Відповіді:


131

explodeє альтернативою. Однак, якщо ви мали намір розділити регулярний вираз , preg_splitзамість цього є альтернатива .


15
Я не погоджуюсь - explodeце не альтернатива, оскільки вона не виконує ту саму функцію split, що є, тобто розділити рядок регулярним виразом . Для цього використовуйте preg_split.
nickf

1
@nickf: Це правильно, я повинен був додати це спочатку. Дякую
Сарфраз

У різних мовах splitметод не завжди приймає регулярні вирази. У .NET, Python, методи String.Split()/ str.split()приймають лише фіксований буквальний рядок як голку. Таким чином, explodeправильно. Для тих, хто походить з Java, preg_splitрішення може виявитися JavaScript, Ruby .
Wiktor Stribiżew

Він сумісний з 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 хоче, щоб ви використовували, якщо щось застаріло, ви завжди можете перевірити функцію в посібнику, і вона підкаже вам альтернативи.


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

Ось як ми можемо ним користуватися :)


2

Натомість ви можете використовувати простішу функцію preg_match, це краще та швидше, ніж усі інші.

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

Вихід: Get this var



0

Якщо ви хочете розділити рядок на слова, ви можете використовувати explode () або str_word_count ().


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;
  }
}
?>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.