Php thay thế chuỗi giữa hai ký tự
Cách đây một thời gian, tôi đã viết một hướng dẫn ngắn về cách bạn có thể viết một hàm PHP ngắn để trích xuất nội dung từ các dấu phân cách cụ thể. Tôi nhận thấy rằng nhiều người đang tìm cách thay thế và thậm chí sửa đổi nội dung giữa 2 dấu phân cách. Vì vậy, tôi đã quyết định viết một kịch bản có thể giúp họ thực hiện nỗ lực này. Sử dụng các biểu thức chính quy để tìm và phân tích nội dung phù hợp
Thay thế tất cả nội dung được tìm thấy giữa các dấu phân cáchfunction replace_content_inside_delimiters($start, $end, $new, $source) { return preg_replace('#('.preg_quote($start).')(.*?)('.preg_quote($end).')#si', '$1'.$new.'$3', $source); } Như bạn có thể thấy hàm sử dụng 4 đối số. 2 hai đầu tiên là dấu phân cách (đầu và cuối), 3d là chuỗi thay thế và cuối cùng là nguồn chính được phân tích cú pháp Show $data = ' Lọc nội dung được tìm thấy giữa các dấu phân cáchTrong trường hợp bạn cần sửa đổi văn bản giữa các dấu phân cách, đây là cách bạn có thể thực hiện $source = ' Làm thế nào nó hoạt động?Regex sử dụng công cụ sửa đổi \s và \i. Cái trước (hay còn gọi là. DOTALL) cũng biến dấu chấm thành một ký tự đặc biệt khớp với các dòng mới. Cái sau khớp với các ký tự ở chế độ không nhạy cảm Sử dụng chức năng regex PHP tích hợp preg_replace và thuộc tính mã hóa hai chuỗi bạn đang tìm kiếm với preg_quote, bạn có thể xóa tất cả văn bản giữa các chuỗi bên trong. Phương pháp này thực sự loại bỏ các nhận xét HTML phù hợp và mọi thứ bên trong chúng khỏi biến $updatedString = preg_replace('/'.preg_quote('').'[\s\S]+?'.preg_quote('').'/', '', $sourceString); ________số 8
Ví dụ trên sẽ xuất ra Để khớp một chuỗi chính xác, thay vì một mẫu, hãy cân nhắc sử dụng hàm str_replace() hoặc str_ireplace() thay cho hàm này Thông số$data = '0 Mẫu để tìm kiếm. Nó có thể là một chuỗi hoặc một mảng với các chuỗi Một số công cụ sửa đổi PCRE cũng có sẵn $data = '1 Chuỗi hoặc một mảng có chuỗi để thay thế. Nếu tham số này là một chuỗi và tham số $data = '0 là một mảng, tất cả các mẫu sẽ được thay thế bằng chuỗi đó. Nếu cả hai tham số $data = '0 và $data = '1 đều là mảng, mỗi $data = '0 sẽ được thay thế bằng đối tác $data = '1. Nếu có ít phần tử trong mảng $data = '1 hơn trong mảng $data = '0, thì bất kỳ phần tử thừa nào của $data = '0 sẽ được thay thế bằng một chuỗi rỗng $data = '1 có thể chứa các tham chiếu ở dạng The slow black bear jumps over the lazy dog.9 hoặc $source = '10, với dạng sau là dạng được ưu tiên. Mọi tham chiếu như vậy sẽ được thay thế bằng văn bản được chụp bởi mẫu được đặt trong ngoặc đơn thứ n. n có thể từ 0 đến 99 và $source = '11 hoặc $source = '12 đề cập đến văn bản khớp với toàn bộ mẫu. Các dấu ngoặc đơn mở được tính từ trái sang phải (bắt đầu từ 1) để có được số mẫu con bắt. Lưu ý rằng các dấu gạch chéo ngược trong chuỗi ký tự có thể cần phải được thoát Khi làm việc với một mẫu thay thế trong đó một tham chiếu ngược được theo sau ngay lập tức bởi một số khác (i. e. đặt một số bằng chữ ngay sau một mẫu phù hợp), bạn không thể sử dụng ký hiệu $source = '13 quen thuộc cho phản hồi của mình. Ví dụ: $source = '14 sẽ gây nhầm lẫn cho preg_replace() vì nó không biết liệu bạn muốn phản hồi của $source = '13 theo sau bởi một $source = '16 theo nghĩa đen hay phản hồi của $source = '14 theo sau là không có gì. Trong trường hợp này, giải pháp là sử dụng $source = '18. Điều này tạo ra một phản hồi ngược $source = '19 bị cô lập, để lại $source = '16 theo nghĩa đen Khi sử dụng công cụ sửa đổi $updatedString = preg_replace('/'.preg_quote('').'[\s\S]+?'.preg_quote('').'/', '', $sourceString);21 không dùng nữa, hàm này sẽ thoát khỏi một số ký tự (cụ thể là $updatedString = preg_replace('/'.preg_quote('').'[\s\S]+?'.preg_quote('').'/', '', $sourceString);22, $updatedString = preg_replace('/'.preg_quote('').'[\s\S]+?'.preg_quote('').'/', '', $sourceString);23, $updatedString = preg_replace('/'.preg_quote('').'[\s\S]+?'.preg_quote('').'/', '', $sourceString);24 và NULL) trong các chuỗi thay thế các tham chiếu ngược. Điều này được thực hiện để đảm bảo rằng không có lỗi cú pháp nào phát sinh từ việc sử dụng tham chiếu ngược với dấu ngoặc đơn hoặc dấu ngoặc kép (e. g. $updatedString = preg_replace('/'.preg_quote('').'[\s\S]+?'.preg_quote('').'/', '', $sourceString);25). Đảm bảo rằng bạn biết cú pháp chuỗi của PHP để biết chính xác chuỗi được giải thích sẽ trông như thế nào $updatedString = preg_replace('/'.preg_quote('').'[\s\S]+?'.preg_quote('').'/', '', $sourceString);26 Chuỗi hoặc một mảng có chuỗi để tìm kiếm và thay thế Nếu $updatedString = preg_replace('/'.preg_quote('').'[\s\S]+?'.preg_quote('').'/', '', $sourceString);26 là một mảng, thì việc tìm kiếm và thay thế được thực hiện trên mọi mục nhập của $updatedString = preg_replace('/'.preg_quote('').'[\s\S]+?'.preg_quote('').'/', '', $sourceString);26 và giá trị trả về cũng là một mảng Nếu mảng $updatedString = preg_replace('/'.preg_quote('').'[\s\S]+?'.preg_quote('').'/', '', $sourceString);26 là kết hợp, các khóa sẽ được giữ nguyên trong giá trị được trả về The slow black bear jumps over the lazy dog.10 Số lần thay thế tối đa có thể cho mỗi mẫu trong mỗi chuỗi $updatedString = preg_replace('/'.preg_quote('').'[\s\S]+?'.preg_quote('').'/', '', $sourceString);26. Mặc định là The slow black bear jumps over the lazy dog.12 (không giới hạn) The slow black bear jumps over the lazy dog.13 Nếu được chỉ định, biến này sẽ được điền với số lần thay thế được thực hiện Giá trị trả vềpreg_replace() trả về một mảng nếu tham số $updatedString = preg_replace('/'.preg_quote('').'[\s\S]+?'.preg_quote('').'/', '', $sourceString);26 là một mảng hoặc một chuỗi nếu ngược lại Nếu tìm thấy kết quả trùng khớp, thì $updatedString = preg_replace('/'.preg_quote('').'[\s\S]+?'.preg_quote('').'/', '', $sourceString);26 mới sẽ được trả về, nếu không thì $updatedString = preg_replace('/'.preg_quote('').'[\s\S]+?'.preg_quote('').'/', '', $sourceString);26 sẽ được trả về không thay đổi hoặc The slow black bear jumps over the lazy dog.8 nếu xảy ra lỗi Lỗi/Ngoại lệSử dụng công cụ sửa đổi "\ e" là một lỗi; Nếu mẫu biểu thức chính quy được chuyển không biên dịch thành biểu thức chính quy hợp lệ, thì một The slow black bear jumps over the lazy dog.18 được phát ra ví dụVí dụ #1 Sử dụng phản hồi theo sau là chữ số The bear black slow jumps over the lazy dog.10 Ví dụ trên sẽ xuất ra Ví dụ #2 Sử dụng mảng được lập chỉ mục với preg_replace() The bear black slow jumps over the lazy dog.11 Ví dụ trên sẽ xuất ra The bear black slow jumps over the lazy dog. Bằng cách phân loại các mẫu và thay thế, chúng ta sẽ nhận được những gì chúng ta muốn The bear black slow jumps over the lazy dog.12 Ví dụ trên sẽ xuất ra The slow black bear jumps over the lazy dog. Ví dụ #3 Thay thế một số giá trị The bear black slow jumps over the lazy dog.13 Ví dụ trên sẽ xuất ra Ví dụ #4 Xóa khoảng trắng Ví dụ này loại bỏ khoảng trắng thừa khỏi một chuỗi The bear black slow jumps over the lazy dog.14 Ví dụ #5 Sử dụng tham số The slow black bear jumps over the lazy dog.13 The bear black slow jumps over the lazy dog.16 The bear black slow jumps over the lazy dog.17 Ví dụ trên sẽ xuất ra ghi chú
|