Rumah php教程 php手册 preg_replace()参数均为数组多次替换的实例理解

preg_replace()参数均为数组多次替换的实例理解

Jun 13, 2016 am 11:19 AM
replace memperkenalkan kira-kira parameter rakan sekelas Contoh tatasusunan artikel menggantikan faham daripada

本文章给各位同学介绍关于preg_replace()参数均为数组多次替换的一些自我理解与替换次数的解决办法,有需要了解的同不可参考。  

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

pattern
要搜索的模式. 可以使一个字符串或字符串数组.

可以使用一些PCRE修饰符, 包括'e'(PREG_REPLACE_EVAL), 可以为这个函数指定.

replacement
用于替换的字符串或字符串数组. 如果这个参数是一个字符串, 并且pattern 是一个数组, 那么所有的模式都使用这个字符串进行替换. 如果pattern和replacement 都是数组, 每个pattern使用replacement中对应的 元素进行替换. 如果replacement中的元素比pattern中的少, 多出来的pattern使用空字符串进行替换.

replacement中可以包含后向引用n 或(php 4.0.4以上可用)$n, 语法上首选后者. 每个 这样的引用将被匹配到的第n个捕获子组捕获到的文本替换. n 可以是0-99, �和$0代表完整的模式匹配文本. 捕获子组的序号计数方式为: 代表捕获子组的左括号从左到右, 从1开始数. 如果要在replacement 中使用反斜线, 必须使用4个("", 译注: 因为这首先是php的字符串, 经过转义后, 是两个, 再经过 正则表达式引擎后才被认为是一个原文反斜线).

当在替换模式下工作并且后向引用后面紧跟着需要是另外一个数字(比如: 在一个匹配模式后紧接着增加一个原文数字), 不能使用1这样的语法来描述后向引用. 比如, 11将会使preg_replace() 不能理解你希望的是一个1后向引用紧跟一个原文1, 还是 一个11后向引用后面不跟任何东西. 这种情况下解决方案是使用${1}1. 这创建了一个独立的$1后向引用, 一个独立的原文1.

当使用e修饰符时, 这个函数会转义一些字符(即:', ", 和NULL)然后进行后向引用替换. 当这些完成后请确保后向引用解析完后没有单引号或 双引号引起的语法错误(比如: 'strlen('$1')+strlen("$2")'). 确保符合PHP的 字符串语法, 并且符合eval语法. 因为在完成替换后, 引擎会将结果字符串作为php代码使用eval方式进行评估并将返回值作为最终参与替换的字符串.

subject
要进行搜索和替换的字符串或字符串数组.

如果subject是一个数组, 搜索和替换回在subject 的每一个元素上进行, 并且返回值也会是一个数组.

limit
每个模式在每个subject上进行替换的最大次数. 默认是 -1(无限).

count
如果指定, 将会被填充为完成的替换次数.


是— 执行一个正则表达式的搜索和替换的用函数,平时我们用它时多是一次替换结束,今天又看php手册发现了一个较为难理解(自认为)的例子分享给大家。


    

 代码如下 复制代码

 $subject = array('1', 'a', '2', 'b', '3', 'A', 'B', '4');
 $pattern = array('/d/', '/[a-z]/', '/[1a]/');
 $replace = array('A:$0', 'B:$0', 'C:$0');
 
 echo "preg_replace returnsn

	";
 print_r(preg_replace($pattern, $replace, $subject)); 
 ?>
Salin selepas log masuk

 

结果如下:

咋一看,我就看晕了

一般 若匹配模式和替换内容这两项都是数组的话它们应该相对应,如果replacement中的元素比pattern中的少, 多出来的pattern使用空字符串进行替换.

$pattern就像个扫描器,扫到匹配的就用于之对应的$replace替换

对于上例替换过程如下

 /d/扫描$subject里的1,匹配了,匹配内容为$0(也就是1)就把1替换为A:1

然后用/[a-z]/扫描A:1不匹配,就不替换,继续用[1a]扫描A:1,匹配内容为1(也就是$0),就把A:1中1换为C:1

第一项最终被替换为A:C:1

简化过程

1->A:1->A:C:1

a->B:a->B:C:a

2->A:2

b->B:b

A(没有符合匹配的就不替换了)

B(同上)

4->A:4

拿$pattern里的每一个模式依次去匹配$subject里的每一个元素,匹配到了就用与$pattern对应的那个$replace对换,如上例,可能不止一次替换

控制preg_replace替换次数

 代码如下 复制代码

$v = array('vv','bb'); $str = "vv,cc,abcde,www.bkjia.com,vv"; $str=preg_replace("/$v[0]/","".$v[0]."",$str,1); echo $str; //bb,cc,abcde,www.bkjia.com,vv

$str=preg_replace("/$v[0]/","".$v[0]."",$str,2); //bb,cc,abcde,www.bkjia.com,bb


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk mengalih keluar elemen pendua dari tatasusunan PHP menggunakan gelung foreach? Bagaimana untuk mengalih keluar elemen pendua dari tatasusunan PHP menggunakan gelung foreach? Apr 27, 2024 am 11:33 AM

Kaedah menggunakan gelung foreach untuk mengalih keluar elemen pendua daripada tatasusunan PHP adalah seperti berikut: melintasi tatasusunan, dan jika elemen itu sudah wujud dan kedudukan semasa bukan kejadian pertama, padamkannya. Contohnya, jika terdapat rekod pendua dalam hasil pertanyaan pangkalan data, anda boleh menggunakan kaedah ini untuk mengalih keluarnya dan mendapatkan hasil tanpa rekod pendua.

Seni PHP Array Deep Copy: Menggunakan Kaedah Berbeza untuk Mencapai Salinan Sempurna Seni PHP Array Deep Copy: Menggunakan Kaedah Berbeza untuk Mencapai Salinan Sempurna May 01, 2024 pm 12:30 PM

Kaedah untuk tatasusunan penyalinan dalam dalam PHP termasuk: Pengekodan dan penyahkodan JSON menggunakan json_decode dan json_encode. Gunakan peta_tatasusunan dan klon untuk membuat salinan kunci dan nilai yang mendalam. Gunakan bersiri dan menyahsiri untuk bersiri dan menyahsiri.

Pembalikan nilai kunci tatasusunan PHP: analisis perbandingan prestasi kaedah yang berbeza Pembalikan nilai kunci tatasusunan PHP: analisis perbandingan prestasi kaedah yang berbeza May 03, 2024 pm 09:03 PM

Perbandingan prestasi kaedah membalik nilai kunci tatasusunan PHP menunjukkan bahawa fungsi array_flip() berprestasi lebih baik daripada gelung for dalam tatasusunan besar (lebih daripada 1 juta elemen) dan mengambil masa yang lebih singkat. Kaedah gelung untuk membalikkan nilai kunci secara manual mengambil masa yang agak lama.

Pengenalan terperinci fungsi Samsung S24ai Pengenalan terperinci fungsi Samsung S24ai Jun 24, 2024 am 11:18 AM

2024 ialah tahun pertama telefon mudah alih AI Semakin banyak telefon mudah alih menyepadukan berbilang fungsi AI Diperkasakan oleh teknologi pintar AI, telefon mudah alih kami boleh digunakan dengan lebih cekap dan mudah. Baru-baru ini, siri Galaxy S24 yang dikeluarkan pada awal tahun ini sekali lagi telah meningkatkan pengalaman AI generatifnya Mari lihat pengenalan fungsi terperinci di bawah. 1. Pemerkasaan AI generatif yang mendalam Siri Samsung Galaxy S24 telah membawa banyak aplikasi pintar melalui pemerkasaan Galaxy AI Fungsi ini disepadukan secara mendalam dengan Samsung One UI6.1, membolehkan pengguna memperoleh pengalaman pintar yang mudah pada bila-bila masa, dengan ketara. meningkatkan prestasi telefon bimbit Kecekapan dan kemudahan penggunaan. Fungsi carian segera yang dipelopori oleh siri Galaxy S24 adalah salah satu sorotan Pengguna hanya perlu menekan dan menahan

Amalan Terbaik untuk Menyalin Dalam Tatasusunan PHP: Temui Kaedah Cekap Amalan Terbaik untuk Menyalin Dalam Tatasusunan PHP: Temui Kaedah Cekap Apr 30, 2024 pm 03:42 PM

Amalan terbaik untuk melaksanakan salinan dalam tatasusunan dalam PHP ialah menggunakan json_decode(json_encode($arr)) untuk menukar tatasusunan kepada rentetan JSON dan kemudian menukarnya kembali kepada tatasusunan. Gunakan unserialize(serialize($arr)) untuk mensiri tatasusunan kepada rentetan dan kemudian menyahsirikannya kepada tatasusunan baharu. Gunakan RecursiveIteratorIterator untuk melintasi tatasusunan berbilang dimensi secara rekursif.

Amalan pengisihan pelbagai dimensi tatasusunan PHP: daripada senario mudah kepada kompleks Amalan pengisihan pelbagai dimensi tatasusunan PHP: daripada senario mudah kepada kompleks Apr 29, 2024 pm 09:12 PM

Pengisihan tatasusunan berbilang dimensi boleh dibahagikan kepada pengisihan lajur tunggal dan pengisihan bersarang. Pengisihan lajur tunggal boleh menggunakan fungsi array_multisort() untuk mengisih mengikut lajur pengisihan bersarang memerlukan fungsi rekursif untuk merentasi tatasusunan dan mengisihnya. Kes praktikal termasuk pengisihan mengikut nama produk dan pengisihan kompaun mengikut volum jualan dan harga.

Aplikasi fungsi pengelompokan tatasusunan PHP dalam pengisihan data Aplikasi fungsi pengelompokan tatasusunan PHP dalam pengisihan data May 04, 2024 pm 01:03 PM

Fungsi array_group_by PHP boleh mengumpulkan elemen dalam tatasusunan berdasarkan kekunci atau fungsi penutupan, mengembalikan tatasusunan bersekutu dengan kuncinya ialah nama kumpulan dan nilainya ialah tatasusunan elemen kepunyaan kumpulan.

Pengenalan kepada platform semakan skor dalam talian (alat pertanyaan skor yang mudah dan pantas) Pengenalan kepada platform semakan skor dalam talian (alat pertanyaan skor yang mudah dan pantas) Apr 30, 2024 pm 08:19 PM

Alat pertanyaan skor pantas memberikan lebih banyak kemudahan untuk pelajar dan ibu bapa Dengan perkembangan Internet, semakin banyak institusi pendidikan dan sekolah telah mula menyediakan perkhidmatan semakan skor dalam talian. Untuk membolehkan anda menjejaki kemajuan akademik anak anda dengan mudah, artikel ini akan memperkenalkan beberapa platform semakan skor dalam talian yang biasa digunakan. 1. Kemudahan - Ibu bapa boleh menyemak markah ujian anak-anak mereka pada bila-bila masa dan di mana-mana sahaja melalui platform semakan skor dalam talian. Selagi ada sambungan Internet, sama ada di tempat kerja atau ketika keluar, ibu bapa boleh mengikuti perkembangan status pembelajaran anak-anak mereka dan memberikan bimbingan dan bantuan yang disasarkan kepada anak-anak mereka. 2. Pelbagai fungsi - sebagai tambahan kepada pertanyaan skor, ia juga menyediakan maklumat seperti jadual kursus dan pengaturan peperiksaan Banyak carian dalam talian tersedia.

See all articles