PHP thay thế chia tách?


92

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:


131

explodelà 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_splitvào đó là thay thế.


15
Tôi không đồng ý - explodekhô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ụng preg_split.
nickf

1
@nickf: Đúng vậy, tôi nên thêm điều đó vào ban đầu. Cảm ơn
Sarfraz

Trong các ngôn ngữ khác nhau, splitphươ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, explodelà chính xác. Đối với những người đến từ Java, JavaScript, Ruby, preg_splitcó thể là giải pháp.
Wiktor Stribiżew

Nó tương thích với Visual Basic.NET's String.Split (). Nice
Md Ashraful Islam

22

splitkhô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 explodelà một lựa chọn rất tốt (và sẽ được khuyến khích sử dụng splitngay 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.


16
  • 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ế.


7

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();explode();cách sử dụng

Cách split () được 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

Làm thế nào boom () có thể được sử dụng

<?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ó :)


2

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



0

Nếu bạn muốn chia một chuỗi thành các từ, bạn có thể sử dụng boom () hoặc str_word_count ().


0

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;
  }
}
?>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.