PHP nói với tôi rằng phân tách không được dùng nữa, phương pháp thay thế mà tôi nên sử dụng là gì?
Câu trả lời:
explode
là một sự thay thế. Tuy nhiên, nếu bạn định chia thành một biểu thức chính quy , thì thay preg_split
vào đó là thay thế.
split
phương thức này không phải lúc nào cũng chấp nhận các biểu thức chính quy. Trong .NET, Python, String.Split()
/ str.split()
method chỉ chấp nhận một chuỗi ký tự cố định như một kim. Như vậy, explode
là chính xác. Đối với những người đến từ Java, JavaScript, Ruby, preg_split
có thể là giải pháp.
split
không được dùng nữa vì nó là một phần của nhóm hàm sử dụng các biểu thức chính quy POSIX; rằng toàn bộ gia đình không được chấp nhận ủng hộ PCRE (preg_*
).
Nếu bạn không cần chức năng biểu thức chính quy, thì đây explode
là một lựa chọn rất tốt (và sẽ được khuyến khích sử dụng split
ngay cả khi điều đó không bị phản đối), nếu mặt khác, bạn cần sử dụng biểu thức chính quy thì thay thế PCRE chỉ đơn giản là preg_split
.
preg_split
nếu bạn cần chia theo cụm từ thông dụng. str_split
nếu bạn cần chia theo ký tự. explode
nếu bạn cần phân chia theo thứ gì đó đơn giản.Ngoài ra trong tương lai, nếu bạn muốn biết PHP muốn bạn sử dụng cái gì nếu thứ gì đó không được dùng nữa, bạn luôn có thể kiểm tra hàm trong sách hướng dẫn và nó sẽ cho bạn biết các lựa chọn thay thế.
Tôi muốn làm rõ ở đây rằng preg_split();
nó khác xa với nó nhưng explode();
có thể được sử dụng theo cách tương tự nhưsplit();
sau đây là so sánh giữa split();
và explode();
cách sử dụng
<?php
$date = "04/30/1973";
list($month, $day, $year) = split('[/.-]', $date);
echo $month; // foo
echo $day; // *
echo $year;
?>
URL: http://php.net/manual/en/ Chức năng.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/ Chức năng.explode.php
Đây là cách chúng ta có thể sử dụng nó :)
Thay vào đó, bạn có thể sử dụng hàm preg_match dễ dàng hơn, Nó tốt hơn và nhanh hơn tất cả các hàm khác.
$var = "<tag>Get this var</tag>";
preg_match("/<tag>(.*)<\/tag>/", $var , $new_var);
echo $new_var['1'];
Đầu ra: Get this var
Có, tôi sẽ sử dụng boom hoặc bạn có thể sử dụng:
preg_split
Phương pháp được khuyên dùng với Tài liệu PHP 6. preg_split
Gặp vấn đề tương tự, nhưng mã của tôi phải hoạt động trên cả PHP 5 và PHP 7..
Đây là đoạn mã của tôi, đã giải quyết được điều này .. Nhập ngày ở định dạng dmY với một trong các dấu phân cách "/. -"
<?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
không phải là lựa chọn thay thế, vì nó không thực hiện chức năng tương tự nhưsplit
: chia một chuỗi theo một biểu thức chính quy . Với mục đích đó, sử dụngpreg_split
.