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á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 = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $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 = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
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 = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
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 = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
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 = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
0 và
$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
1 đều là mảng, mỗi
$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
0 sẽ được thay thế bằng đối tác
$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
1. Nếu có ít phần tử trong mảng
$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
1 hơn trong mảng
$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
0, thì bất kỳ phần tử thừa nào của
$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
0 sẽ được thay thế bằng một chuỗi rỗng

$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
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 = '
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; }
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 = '
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; }
11 hoặc
$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; }
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 = '
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; }
13 quen thuộc cho phản hồi của mình. Ví dụ:
$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; }
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 = '
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; }
13 theo sau bởi một
$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; }
16 theo nghĩa đen hay phản hồi của
$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; }
14 theo sau là không có gì. Trong trường hợp này, giải pháp là sử dụng
$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; }
18. Điều này tạo ra một phản hồi ngược
$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; }
19 bị cô lập, để lại
$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; }
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ú

Ghi chú

Khi sử dụng mảng có

$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
0 và
$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
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
$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
0 nào sẽ được thay thế bằng
$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
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[]

Ghi chú

Khi cả

$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
0 và
$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
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
$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
0/
$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
1 thứ hai sẽ hoạt động trên chuỗi kết quả từ cặp
$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
0/
$data = '
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
'; $start = '
'; $end = '
'; $replace_with = 'PHP: Hypertext Preprocessor'; $str = replace_content_inside_delimiters[$start, $end, 'PHP: Hypertext Preprocessor', $data]; echo $str; // Result:
PHP: Hypertext Preprocessor
'
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

Chủ Đề