PHP каже мені, що розділення застаріло, який альтернативний метод я повинен використовувати?
Відповіді:
explodeє альтернативою. Однак, якщо ви мали намір розділити регулярний вираз , preg_splitзамість цього є альтернатива .
splitметод не завжди приймає регулярні вирази. У .NET, Python, методи String.Split()/ str.split()приймають лише фіксований буквальний рядок як голку. Таким чином, explodeправильно. Для тих, хто походить з Java, preg_splitрішення може виявитися JavaScript, Ruby .
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
Так, я б використовував вибух або ти міг би використовувати:
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.