Thay thế tất cả nội dung được tìm thấy giữa các dấu phân cách
function 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
$data = ''; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor
Lọc nội dung được tìm thấy giữa các dấu phân cách
Trong 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 = 'PHP is a widely-used general-purpose scripting language for web development.'; $start = ''; $end = ''; $data = preg_replace['#['.preg_quote[$start].'][.*?]['.preg_quote[$end].']#si', '$1'.parse_content[$new].'$3', $source]; function parse_content[$content] { $words = array['PHP', 'scripting', 'development']; // Let's bold some words! foreach[$words as $word] { $content = str_replace[$word, ''.$word.'', $content]; } return $content; }
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 $sourceString
$updatedString = preg_replace['/'.preg_quote[''].'[\s\S]+?'.preg_quote[''].'/', '', $sourceString];
________số 8
echo "1] ".var_export[substr["pear", 0, 2], true].PHP_EOL;
echo "2] ".var_export[substr[54321, 0, 2], true].PHP_EOL;
echo "3] ".var_export[substr[new apple[], 0, 2], true].PHP_EOL;
echo "4] ".var_export[substr[true, 0, 1], true].PHP_EOL;
echo "5] ".var_export[substr[false, 0, 1], true].PHP_EOL;
echo "6] ".var_export[substr["", 0, 1], true].PHP_EOL;
echo "7] ".var_export[substr[1.2e3, 0, 4], true].PHP_EOL;
?>
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'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor
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'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor
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ố'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor
$data = '0 và'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor
$data = '1 đều là mảng, mỗi'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor
$data = '0 sẽ được thay thế bằng đối tác'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor
$data = '1. Nếu có ít phần tử trong mảng'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor
$data = '1 hơn trong mảng'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor
$data = '0, thì bất kỳ phần tử thừa nào của'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor
$data = '0 sẽ được thay thế bằng một chuỗi rỗng'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor
$data = '1 có thể chứa các tham chiếu ở dạng'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor
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àPHP is a widely-used general-purpose scripting language for web development.'; $start = ''; $end = ''; $data = preg_replace['#['.preg_quote[$start].'][.*?]['.preg_quote[$end].']#si', '$1'.parse_content[$new].'$3', $source]; function parse_content[$content] { $words = array['PHP', 'scripting', 'development']; // Let's bold some words! foreach[$words as $word] { $content = str_replace[$word, ''.$word.'', $content]; } return $content; }
$source = '11 hoặcPHP is a widely-used general-purpose scripting language for web development.'; $start = ''; $end = ''; $data = preg_replace['#['.preg_quote[$start].'][.*?]['.preg_quote[$end].']#si', '$1'.parse_content[$new].'$3', $source]; function parse_content[$content] { $words = array['PHP', 'scripting', 'development']; // Let's bold some words! foreach[$words as $word] { $content = str_replace[$word, ''.$word.'', $content]; } return $content; }
$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átPHP is a widely-used general-purpose scripting language for web development.'; $start = ''; $end = ''; $data = preg_replace['#['.preg_quote[$start].'][.*?]['.preg_quote[$end].']#si', '$1'.parse_content[$new].'$3', $source]; function parse_content[$content] { $words = array['PHP', 'scripting', 'development']; // Let's bold some words! foreach[$words as $word] { $content = str_replace[$word, ''.$word.'', $content]; } return $content; }
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ụ:PHP is a widely-used general-purpose scripting language for web development.'; $start = ''; $end = ''; $data = preg_replace['#['.preg_quote[$start].'][.*?]['.preg_quote[$end].']#si', '$1'.parse_content[$new].'$3', $source]; function parse_content[$content] { $words = array['PHP', 'scripting', 'development']; // Let's bold some words! foreach[$words as $word] { $content = str_replace[$word, ''.$word.'', $content]; } return $content; }
$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ủaPHP is a widely-used general-purpose scripting language for web development.'; $start = ''; $end = ''; $data = preg_replace['#['.preg_quote[$start].'][.*?]['.preg_quote[$end].']#si', '$1'.parse_content[$new].'$3', $source]; function parse_content[$content] { $words = array['PHP', 'scripting', 'development']; // Let's bold some words! foreach[$words as $word] { $content = str_replace[$word, ''.$word.'', $content]; } return $content; }
$source = '13 theo sau bởi mộtPHP is a widely-used general-purpose scripting language for web development.'; $start = ''; $end = ''; $data = preg_replace['#['.preg_quote[$start].'][.*?]['.preg_quote[$end].']#si', '$1'.parse_content[$new].'$3', $source]; function parse_content[$content] { $words = array['PHP', 'scripting', 'development']; // Let's bold some words! foreach[$words as $word] { $content = str_replace[$word, ''.$word.'', $content]; } return $content; }
$source = '16 theo nghĩa đen hay phản hồi củaPHP is a widely-used general-purpose scripting language for web development.'; $start = ''; $end = ''; $data = preg_replace['#['.preg_quote[$start].'][.*?]['.preg_quote[$end].']#si', '$1'.parse_content[$new].'$3', $source]; function parse_content[$content] { $words = array['PHP', 'scripting', 'development']; // Let's bold some words! foreach[$words as $word] { $content = str_replace[$word, ''.$word.'', $content]; } return $content; }
$source = '14 theo sau là không có gì. Trong trường hợp này, giải pháp là sử dụngPHP is a widely-used general-purpose scripting language for web development.'; $start = ''; $end = ''; $data = preg_replace['#['.preg_quote[$start].'][.*?]['.preg_quote[$end].']#si', '$1'.parse_content[$new].'$3', $source]; function parse_content[$content] { $words = array['PHP', 'scripting', 'development']; // Let's bold some words! foreach[$words as $word] { $content = str_replace[$word, ''.$word.'', $content]; } return $content; }
$source = '18. Điều này tạo ra một phản hồi ngượcPHP is a widely-used general-purpose scripting language for web development.'; $start = ''; $end = ''; $data = preg_replace['#['.preg_quote[$start].'][.*?]['.preg_quote[$end].']#si', '$1'.parse_content[$new].'$3', $source]; function parse_content[$content] { $words = array['PHP', 'scripting', 'development']; // Let's bold some words! foreach[$words as $word] { $content = str_replace[$word, ''.$word.'', $content]; } return $content; }
$source = '19 bị cô lập, để lạiPHP is a widely-used general-purpose scripting language for web development.'; $start = ''; $end = ''; $data = preg_replace['#['.preg_quote[$start].'][.*?]['.preg_quote[$end].']#si', '$1'.parse_content[$new].'$3', $source]; function parse_content[$content] { $words = array['PHP', 'scripting', 'development']; // Let's bold some words! foreach[$words as $word] { $content = str_replace[$word, ''.$word.'', $content]; } return $content; }
$source = '16 theo nghĩa đenPHP is a widely-used general-purpose scripting language for web development.'; $start = ''; $end = ''; $data = preg_replace['#['.preg_quote[$start].'][.*?]['.preg_quote[$end].']#si', '$1'.parse_content[$new].'$3', $source]; function parse_content[$content] { $words = array['PHP', 'scripting', 'development']; // Let's bold some words! foreach[$words as $word] { $content = str_replace[$word, ''.$word.'', $content]; } return $content; }
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ú
Ghi chú
Khi sử dụng mảng có
$data = '0 và'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor$data = '1, các khóa được xử lý theo thứ tự chúng xuất hiện trong mảng. Điều này không nhất thiết giống như thứ tự chỉ mục số. Nếu bạn sử dụng chỉ mục để xác định'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor$data = '0 nào sẽ được thay thế bằng'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor$data = '1 nào, bạn nên thực hiện ksort[] trên mỗi mảng trước khi gọi preg_replace[]'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor
Ghi chú
Khi cả
$data = '0 và'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor$data = '1 đều là mảng, các quy tắc so khớp sẽ hoạt động tuần tự. Tức là, cặp'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor$data = '0/'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor$data = '1 thứ hai sẽ hoạt động trên chuỗi kết quả từ cặp'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor$data = '0/'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor$data = '1 đầu tiên, không phải chuỗi ban đầu. Nếu bạn muốn mô phỏng các thay thế hoạt động song song, chẳng hạn như hoán đổi hai giá trị, hãy thay thế một mẫu bằng một trình giữ chỗ trung gian, sau đó trong một cặp sau đó, hãy thay thế trình giữ chỗ trung gian đó bằng một thay thế mong muốn'; $start = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; $end = ''; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:'PHP: Hypertext Preprocessor