Phương pháp phát nổ PHP để tách một chuỗi với ba ví dụ. Phương pháp phát nổ PHP để phân tách một chuỗi với ba ví dụ Dấu phân cách dữ liệu và khóa

Chuyển đổi dữ liệu từ cách biểu diễn này sang cách biểu diễn khác là một cơ chế phổ biến, thường là duy nhất để giải quyết vấn đề. Mảng là một trường hợp đơn giản của một đối tượng. Chuỗi là sự thể hiện tự nhiên của thông tin để truyền, xử lý hoặc lưu trữ.

Kinh nghiệm và ngữ nghĩa được triển khai trong PHP: mảng, hàm và cấu trúc cú pháp giúp tạo ra các giải pháp tối ưu để xử lý thông tin khi nó được trình bày.

Thông tin: ký tự, chuỗi và dữ liệu

Ở dạng “thuần túy”, thông tin là một chuỗi ký tự, lời nói hoặc một chuỗi tín hiệu. Chuỗi, mảng và đối tượng xuất hiện trong lập trình - đây là các biến thể của cấu trúc chuỗi nhân tạo. Số cũng là chuỗi, nhưng là số, không phải ký hiệu.

PHP cho phép bạn chuyển đổi một chuỗi thành một mảng theo nhiều cách khác nhau. Có hai chức năng đặc biệt thực hiện việc này một cách "tự thân":

  • $aArr = nổ("x", "chuỗi");
  • $aStr = implode("y", $aArr).

Hàm đầu tiên tìm ký tự phân cách "x" và phân tách chuỗi "chuỗi" bằng cách sử dụng nó. Mảng kết quả chứa chính xác số phần tử (dòng) nằm giữa các ký tự "x". Biểu tượng phân cách có thể không nhất thiết phải là biểu tượng cổ điển:

  • dấu phẩy;
  • dấu chấm;
  • dấu chấm phẩy.

Bạn có thể chia chuỗi theo chuỗi con hoặc bằng tổ hợp ký tự đặc biệt.

Độ dài chuỗi là strlen() trong PHP, độ dài mảng là count(). Trong trường hợp đầu tiên, số lượng ký tự được tính, trong trường hợp thứ hai là số phần tử. Vì ký tự phân cách không được bao gồm trong các phần tử mảng nên giá trị của count() sẽ bằng số lượng dấu phân cách trong chuỗi được chuyển đổi trừ đi một.

Trong phép biến đổi ngược PHP, mảng thành chuỗi được chuyển đổi bằng ký tự phân cách (có thể trống) và tất cả dữ liệu (số và biểu thức Boolean) được hợp nhất thành một chuỗi. Một phần tử của mảng có thể là một mảng khác nhưng người lập trình phải xử lý trường hợp này một cách cụ thể. Hàm implode() không hề đệ quy.

Trong ví dụ này, không có vấn đề gì khi chuyển đổi mảng PHP thành chuỗi miễn là không có mảng nào khác trong số các phần tử của chúng. Khi các phần tử kết hợp được chuyển đổi, thông tin quan trọng sẽ bị mất. Đặc biệt, các phần tử “mận” và “đào” sẽ bị tước bỏ chìa khóa.

Dấu phân cách dữ liệu và khóa

Không coi dấu chấm, dấu phẩy, dấu hai chấm, v.v. là dấu phân cách, đây là trường hợp đặc biệt để phân tách dữ liệu với nhau. Khi chuyển đổi một chuỗi trong PHP, một mảng đa chiều sẽ không hoạt động và các chỉ mục kết hợp sẽ không có nguồn gốc từ đâu.

Phân tích chuỗi bằng dấu phân cách luôn tạo ra chuỗi. Nhưng đây không phải là lý do để dừng lại ở đó. Sau khi phân tích một dòng thành các phần tử thành phần của nó, bạn có thể tiếp tục.

Ví dụ, có một đoạn văn có nhiều câu (dấu phân cách "." - dấu chấm), trong câu có một số cụm từ (dấu phân cách "," - dấu phẩy, ";" - dấu chấm phẩy và "." - dấu chấm), cụm từ có chứa từ ( dấu phân cách " " - dấu cách, "," - dấu phẩy, ";" - dấu chấm phẩy và "." - dấu chấm).

Với cách phân tách này trong PHP, có thể dễ dàng thu được một mảng nhiều chiều, nhưng thuật toán sẽ rất xấu: số lượng dấu phân cách tăng lên và việc thiếu kết nối giữa các đoạn văn liền kề được đảm bảo để đảm bảo trùng lặp các câu, cụm từ và từ.

Bằng cách phân tích chuỗi, bạn có thể chuyển đổi ngay lập tức chuỗi chữ số thành số và giá trị logic thành đúng và sai. Nhưng điều đặc biệt là thông tin key sẽ vẫn không xuất hiện, vì key chính là ý nghĩa, chỉ có thể tạo chỉ số số tự động.

Dấu phân cách phức tạp

Việc in một mảng PHP thành một chuỗi thường được sử dụng cho mục đích tiện ích. Tệp cấu hình được viết theo truyền thống từng dòng, với ký hiệu bằng hoặc dấu hai chấm phân tách tên khỏi giá trị.

Với giải pháp này, đầu ra của một mảng trong PHP được thực hiện trong một tệp, việc phân chia chuỗi được tự động lấy và với tính năng nhận dạng ngược, các mảng kết hợp có thể dễ dàng thu được.

Bằng cách đọc tệp, người lập trình sẽ nhận được các dòng và bằng cách ngắt từng dòng bằng dấu "=" hoặc Cản, anh ta sẽ nhận được tên và giá trị của nó. Một thao tác rất phổ biến, mặc dù sử dụng ký hiệu XML hiện đại hơn vì lý do đơn giản là ngoài tên và giá trị, dữ liệu bổ sung có thể được lưu trữ và khôi phục, chẳng hạn như các thuộc tính biến.

Trong ví dụ với các đoạn văn (ví dụ: văn bản tự nhiên để xây dựng từ điển hoặc kết quả phân tích cú pháp để tạo mẫu dữ liệu), điều quan trọng không phải là quy trình cụ thể để chuyển đổi một chuỗi thành một mảng, mà là một giải pháp toàn diện cho tất cả các đoạn văn hoặc khối thông tin.

Thông thường, một tác vụ như vậy sẽ yêu cầu một giải pháp ngược lại, khi đó “bộ” dữ liệu được tạo sẽ cần được sử dụng để tìm kiếm thông tin trong đó hoặc tập hợp lại thành một chuỗi.

Tháo rời và tập hợp lại các chuỗi - xác thực dữ liệu

Trong PHP: mảng thành chuỗi là giải pháp chính xác. Nếu thông tin nguồn có thể có lỗi cú pháp, thừa khoảng trắng hoặc ký hiệu không chính xác thì chúng sẽ không xuất hiện trong quá trình phân tích cú pháp. Kết quả của việc chuyển đổi thông tin ban đầu theo quy luật bất thành văn của lập trình được thực hiện một cách chính thức và kết quả sẽ được trình bày rõ ràng trên kệ.

Quy trình ngược lại sẽ tạo ra chuỗi nguồn chính xác. Nếu bạn so sánh lượng thông tin nguồn và kết quả của phép chuyển đổi ngược lại, bạn có thể rút ra kết luận về nơi xảy ra lỗi hoặc mất dữ liệu. Trong PHP, độ dài của một mảng trong bối cảnh độ dài ban đầu của chuỗi có thể cho phép chúng ta đưa ra các kết luận cần thiết.

Thẻ thời gian, ngày tháng và sự kiện

Trong quá trình phát triển các dự án quan trọng, khi tạo các đối tượng điều khiển, chẳng hạn như thời gian hoặc sự kiện, một hàng là một cách thể hiện dữ liệu và một mảng là một cách khác. Nhưng trong ứng dụng chúng tương đương nhau.

Khi cần thực hiện các phép tính toán học hoặc logic, người lập trình sẽ thao tác với mảng, khi cần lưu trữ dữ liệu, anh ta sử dụng phiên bản chuỗi.

Truy cập các chỉ mục vào các trường cơ sở dữ liệu - một thực tiễn thực tế về hoạt động chung của MySQL và PHP, các mảng trong một hàng = một chỉ mục trên các hàng của một số bảng cơ sở dữ liệu. Nếu cơ sở dữ liệu chứa hàng tá bảng và trong mỗi bảng, các hàng có thể được chọn bằng cách kết hợp các tên (giá trị) trong một kết hợp nhất định, thì sau khi tạo mảng truy cập hàng, sau đó bạn có thể có quyền truy cập vào chúng bằng thuật toán hình thành chỉ mục, chứ không phải bằng cách tìm kiếm trong cơ sở dữ liệu.

Việc chuyển đổi một mảng thành một chuỗi có thể được coi là một thuật toán để hình thành chỉ mục mong muốn, trong khi nội dung của mảng được hình thành dưới sự kiểm soát của các sự kiện hoặc hành động hoàn toàn khác nhau của người dùng.

Hợp nhất mảng

Các hàm PHP cho phép bạn tự do thao tác với mảng. Nhưng vấn đề luôn nảy sinh khi chọn dữ liệu duy nhất hoặc tìm dữ liệu trong một mảng.

Vấn đề đầu tiên được giải quyết theo cách lặp đi lặp lại: một mảng (hoặc một số mảng) được lặp lại và một chuỗi các giá trị duy nhất được hình thành - một giải pháp rõ ràng nhưng không hiệu quả nhất.

Việc tìm kiếm dữ liệu trong mảng cũng là một chu trình, nếu có nhiều phần tử thì chu trình sẽ khá dài và mất một khoảng thời gian đáng kể. Có thể gửi một mảng tới một chuỗi và sử dụng hàm strpos() để tìm sự xuất hiện của phần tử mong muốn, nhưng điều này sẽ gây ra vấn đề phát hiện sự xuất hiện sai sót.

Ví dụ: từ "khay" đã được tìm kiếm và sự xuất hiện của nó được tìm thấy trong từ "búa". Bạn có thể loại bỏ những lỗi như vậy nếu hợp nhất tất cả các phần tử của mảng thành một chuỗi bằng dấu phân cách đặc biệt, điều này sẽ tránh được sự mơ hồ.

Nếu dòng chứa “[khay]” và “[búa]”, thì việc tìm kiếm sẽ không gặp vấn đề gì.

Nhưng không có gì đảm bảo rằng, trên lượng dữ liệu thực, hàm strpos() sẽ hoạt động nhanh hơn vòng lặp lặp trên các phần tử mảng.

Giải pháp tốt nhất là để mảng hoặc chuỗi tự thực hiện điều đúng đắn. Nếu chúng ta phần nào làm phức tạp các mảng và đơn giản hóa các chuỗi, vì mảng trước là trường hợp đặc biệt của một đối tượng và mảng sau là chuỗi tuần tự hóa truyền thống, thì mọi người sẽ làm việc riêng của mình.

Vào đúng thời điểm, đối tượng là một mảng và khi cần một chuỗi thì nó sẽ là một chuỗi. Trong trường hợp này, hoàn toàn không cần thiết phải có cả mảng và chuỗi trong đối tượng cùng một lúc. Bạn có thể xây dựng một cấu trúc dữ liệu độc đáo với khả năng truy cập nhanh. Và đưa logic “mảng” và “chuỗi” vào các phương thức đối tượng.

Cách tiếp cận hướng đối tượng đơn giản hóa việc giải quyết nhiều vấn đề về xử lý thông tin chuỗi, cho phép bạn tránh tập trung vào mảng, vòng lặp và chức năng xử lý chuỗi của chính PHP.

Cả chuỗi và mảng đều là ý nghĩa thực sự của thực tế, ứng dụng, nhiệm vụ. Không có nhiệm vụ nào như vậy - gửi mảng tới chuỗi trong PHP. Nhưng có một nhiệm vụ là lấy một đoạn văn (câu, cụm từ, từ, số ...) dựa trên kết quả thu được trong thuật toán trước đó.

Thuật toán trước mang một ý nghĩa và biểu thức chính xác của ý nghĩa này được chứa trong mảng. Giai đoạn tiếp theo của thuật toán là chuyển đổi ý nghĩa sang một cách biểu diễn khác, thuận tiện cho việc xử lý hoặc ứng dụng tiếp theo.

Bằng cách xem thuật toán là động lực của ý nghĩa và chuyển đổi dữ liệu, có thể hình thành các phép biến đổi đáng tin cậy, dễ hiểu và hiệu quả.

2,8K

Phương thức phát nổ PHP được sử dụng để chia một chuỗi thành một số chuỗi con được chỉ định.

Cú pháp phương thức

Một ví dụ về việc sử dụng phương pháp phát nổ PHP:

$array_name = nổ ($dấu phân cách, $string_to_split, $no_of_breaks)

Ví dụ về việc sử dụng phát nổ để chia số điện thoại

Trong ví dụ này, chúng tôi đã khai báo một biến chuỗi và gán cho nó một số điện thoại theo định dạng sau:

001-234-567678

Sau đó, chúng ta sử dụng phương thức boom để phân tách chuỗi bằng dấu gạch nối (dấu gạch ngang) làm dấu phân cách. Mảng chuỗi trả về được gán cho mảng.

Sau đó, chúng tôi sử dụng vòng lặp Fogeach để hiển thị giá trị của các phần tử mảng là chuỗi con của số điện thoại. Vì tham số giới hạn không được chỉ định nên toàn bộ số điện thoại sẽ được chia thành ba chuỗi con:


Xem bản demo và mã

Ví dụ với dấu cách là dấu phân cách

Ví dụ về ngắt dòng nổ tung trong PHP này sử dụng dấu cách làm dấu phân cách. Ví dụ: hãy lấy dòng này:

Ví dụ một lần nữa không sử dụng tham số giới hạn. Sau khi tạo chuỗi, chúng tôi sử dụng phương thức phát nổ để phân tách chuỗi. Sau đó, chúng tôi sử dụng vòng lặp Fogeach để hiển thị các phần tử mảng được trả về.

Cuối cùng, chúng ta sử dụng hàm count() để hiển thị số chuỗi con trong mảng:


Xem bản demo và mã

Ví dụ với tham số giới hạn

Đây là ví dụ được mô tả ở trên, ngoại trừ ở đây chúng tôi đã sử dụng tham số giới hạn để chỉ định số lượng phân chia trên mỗi dòng. Dưới đây là dòng đã được sử dụng:

Đây là hướng dẫn bùng nổ cho phép phân tách chuỗi trong PHP.

Trong ví dụ về PHP, khi chúng tôi sử dụng khoảng trắng làm dấu phân cách, chỉ có 10 chuỗi con được trả về. Lần này, 5 phần chia được xác định bằng tham số giới hạn:


Xem bản demo và mã

Trang demo chỉ hiển thị năm chuỗi con, chuỗi cuối cùng bao gồm phần còn lại của chuỗi. Tổng số phần tử mảng cũng là 5 chứ không phải 10 như ví dụ trên.

Phương pháp nổ được sử dụng để làm gì?

Phương thức bùng nổ ( Phân chia PHP) được sử dụng để phân tách một chuỗi nhất định. Giả sử một biểu mẫu web chấp nhận số điện thoại có mã quốc gia và mã vùng theo định dạng sau:

001-234-567678

Chúng ta cần tách biệt mã quốc gia và mã vùng, chúng được phân tách bằng dấu gạch nối. Để phân chia một số điện thoại, bạn có thể sử dụng dấu gạch nối phân cách (dấu gạch ngang) sau khi chấp nhận số đó làm tham số đầu vào.

Vì phát nổ trả về một mảng các chuỗi con nên phương thức phát nổ sẽ chia số đó thành mảng các phần tử sau:

  • Phần tử đầu tiên = 001
  • Phần tử thứ hai = 234
  • Phần tử thứ ba = 567678

Cách sử dụng hàm phát nổ PHP

Có ba tham số bạn có thể chỉ định trong hàm phát nổ PHP. Cái cuối cùng trong số chúng là tùy chọn, vì chỉ định số lượng phân vùng ( số lượng chuỗi con tối đa) không cần thiết.

Mô tả từng tham số:

$array_name = nổ ($dấu phân cách, $string_to_split, $no_of_breaks)

  • $Array_name - mảng; bởi vì phương thức phát nổ trả về một mảng các chuỗi thu được bằng cách tách chuỗi;
  • $delimiter - xác định dấu phân cách. Chúng tôi đã sử dụng "-" làm dấu phân cách để chia số điện thoại.

Bạn cũng có thể sử dụng dấu cách, dấu phẩy hoặc các từ khác làm dấu phân cách $.

  • Tham số tiếp theo là chuỗi cần được phân tách bằng phương thức phát nổ. Đây có thể là một biến chuỗi, một mệnh đề, v.v.;
  • Tham số cuối cùng chỉ định số lượng chuỗi con hoặc số lượng phân chia tối đa trên mỗi dòng. Đây là một tham số tùy chọn.

Trong PHP nổ mảng, nếu đối số giới hạn là dương, mảng trả về sẽ chứa số phần tử tối đa, với phần tử cuối cùng chứa phần còn lại của chuỗi.

Nếu bạn cần chuyển đổi một mảng PHP thành một chuỗi, có một số công cụ cho việc này. Việc sử dụng một công cụ cụ thể phụ thuộc vào mục tiêu của bạn.

1. Hàm Implode()

Với sự trợ giúp của nó, bạn có thể “gắn kết” các phần tử mảng thành một chuỗi, thông qua bất kỳ dấu phân cách nào. Đọc thêm: nổ tung
Ví dụ:

Echo implode("|", array(1, 2, 3)); // sẽ ra dòng: 1|2|3

Hàm này có một hàm đối kháng, phát nổ (), ngược lại, chia chuỗi ở dấu phân cách thành các phần tử mảng. Đọc thêm: bùng nổ

2. Hàm Serialize()

Nhiệm vụ chính của hàm là chuyển đổi một biến (trong trường hợp của chúng ta là một mảng) sang trạng thái phù hợp để lưu trữ.
Nó được sử dụng để lưu một mảng thành một chuỗi và sau đó chuyển đổi nó trở lại thành một mảng. Bạn có thể lưu mảng vào một tệp hoặc cơ sở dữ liệu, sau đó khôi phục mảng đó vào lần tiếp theo khi bạn chạy tập lệnh.
Đọc thêm: tuần tự hóa

$array = array("1" =>; "elem 1", "2"=> "elem 2", "3" => "elem 3"); $string = tuần tự hóa($array); tiếng vang $chuỗi; // sẽ tạo ra dòng: a:3:(i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:"elem 3" ;)

Sau đó, từ dòng này, bạn có thể lấy lại mảng:

$array = unserialize($string);

3. Hàm json_encode()

Trả về một biểu diễn JSON của dữ liệu. Bạn có thể đọc nó là gì.
Trong trường hợp của chúng tôi, hàm này giống với tuần tự hóa, nhưng JSON chủ yếu được sử dụng để truyền dữ liệu. Bạn sẽ phải sử dụng định dạng này để trao đổi dữ liệu bằng javascript ở giao diện người dùng. Thêm chi tiết: json_encode

$array = array(1 => "một", 2 => "hai",); $json = json_encode($array); tiếng vang $json; // ("1":một","2":hai")

Hàm gọi lại json_decode() sẽ trả về một đối tượng thuộc loại stdClass nếu tham số thứ hai của hàm là sai. Hoặc nó sẽ trả về một mảng kết hợp nếu true được truyền làm tham số thứ hai. Chi tiết tại đây.

Để chuyển đổi một chuỗi thành một mảng bằng dấu phân cách, bạn có thể sử dụng hàm detect()
Các tham số bắt buộc: dấu phân cách và chuỗi.

// Ví dụ 1 $pizza = "mảnh1 mảnh2 mảnh3 mảnh4 mảnh5 mảnh6"; $miếng = nổ(" ", $pizza); tiếng vang $ miếng; // mảnh1 echo $ miếng; // Piece2 // Ví dụ 2 $data = "foo:*:1023:1000::/home/foo:/bin/sh"; list($user, $pass, $uid, $gid, $gecos, $home, $shell) = phát nổ(://, $data); tiếng vang $người dùng; // foo echo $pass; // *

Chia chuỗi thành mảng bằng biểu thức chính quy

Nếu phát nổ() là không đủ, bạn có thể sử dụng hàm mạnh hơn: preg_split(). Nó cho phép bạn phân tách một chuỗi không phải bằng một bộ ký tự cố định mà bằng

Ví dụ từ tài liệu:

//chia chuỗi theo số lượng dấu phẩy và ký tự khoảng trắng tùy ý, // bao gồm " ", \r, \t, \n và \f $keywords = preg_split("/[\s,]+/", " ngôn ngữ siêu văn bản, lập trình"); print_r($keywords);

Kết quả:

/* Mảng ( => siêu văn bản => ngôn ngữ => lập trình) */

Chuyển chuỗi thành mảng theo số ký tự

Hàm str_split() chuyển đổi một chuỗi thành một mảng, chia nó thành các phần tử có số lượng ký tự được chỉ định. Bạn muốn biết cách sử dụng nó? Kiểm tra tài liệu.

$str = "Xin chào bạn"; $arr2 = str_split($str, 3); print_r($arr2)