Rumah pembangunan bahagian belakang tutorial php php顶用正则匹配多个结果,随机替换其中一个结果

php顶用正则匹配多个结果,随机替换其中一个结果

Jun 13, 2016 pm 12:52 PM
index rand replace

php中用正则匹配多个结果,随机替换其中一个结果

用正则匹配字符,如果是全部替换很简单,使用preg_replace就可以了。但是我现在要对得到的多个匹配成功的结果,随机替换其中的一个,这个就有点麻烦了。自己写了个函数解决,不知道有没有其它更好的方法。例子 “I have a dream. I have a dream. I have a dream. I have a dream.”  匹配式 '/i/'。 上面的字符串中有4个匹配结果,我只要随机替换其中的一个。i替换成hell.

我的代码如下:

 

//正则处理函数
function rand_replace_callback($matches) {
    global $g_rand_replace_num, $g_rand_replace_index, $g_rand_replace_str;
    $g_rand_replace_index++;
    if($g_rand_replace_num==$g_rand_replace_index){
        return $g_rand_replace_str;
    }else {
        return $matches[0];
      }        
}

//随机正则替换函数  如果有多个匹配的单元,随机替换其中的一个。 
//注意global $g_rand_replace_num, $g_rand_replace_index, $g_rand_replace_str;这三个全局变量,不要与其它的冲突
//依赖一个正则处理函数 记录匹配单元总数,取一个总数范围内的随机值,在正则处理函数中判断相等则处理。
function rand_preg_replace($pattern, $t_g_rand_replace_str, $string)
{
    global $g_rand_replace_num, $g_rand_replace_index, $g_rand_replace_str;
    preg_match_all($pattern, $string, $out);$find_count = count($out[0]);  //匹配的单元总数
    $g_rand_replace_num = mt_rand(1, $find_count);  //符合正则搜索条件的集合
    $g_rand_replace_index = 0;  //实际替换过程中的index
    $g_rand_replace_str = $t_g_rand_replace_str;
    echo "现在找到符合的有{$find_count}个<br>";
    $ss=preg_replace_callback($pattern,"rand_replace_callback",$string);
    return $ss;
}

$string = "I have a dream. I have a dream. I have a dream. I have a dream.";
echo rand_preg_replace('/I/', "hell", $string);
Salin selepas log masuk


 


扩展思考,我想减低第一个结果被替换的概念怎么办呢? 有些情况,第一个被替换不是很好,只需要少量的结果是第一个被替换。

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)

Apakah fail index.html? Apakah fail index.html? Feb 19, 2024 pm 01:36 PM

index.html mewakili fail halaman utama halaman web dan merupakan halaman lalai tapak web. Apabila pengguna melawat tapak web, halaman index.html biasanya dimuatkan dahulu. HTML (HypertextMarkupLanguage) ialah bahasa penanda yang digunakan untuk membuat halaman web dan index.html juga merupakan fail HTML. Ia mengandungi struktur dan kandungan halaman web, serta teg dan elemen yang digunakan untuk pemformatan dan reka letak. Berikut ialah contoh kod index.html: &lt

Bagaimana untuk menyelesaikan ralat 'undefined: rand.Seed' dalam golang? Bagaimana untuk menyelesaikan ralat 'undefined: rand.Seed' dalam golang? Jun 25, 2023 am 08:34 AM

Semasa pembangunan atau proses pembelajaran menggunakan Golang, kami mungkin menghadapi mesej ralat undefined:rand.Seed. Ralat ini biasanya berlaku apabila anda perlu menggunakan penjana nombor rawak, kerana di Golang anda perlu menetapkan benih nombor rawak sebelum anda boleh menggunakan fungsi dalam pakej rand. Artikel ini akan menerangkan cara menyelesaikan ralat ini. 1. Perkenalkan pakej matematik/rand Pertama, kita perlu memperkenalkan pakej matematik/rand ke dalam kod. wujud

Cara menggunakan fungsi REPLACE untuk menggantikan bahagian rentetan tertentu dalam MySQL Cara menggunakan fungsi REPLACE untuk menggantikan bahagian rentetan tertentu dalam MySQL Jul 25, 2023 pm 01:18 PM

MySQL ialah sistem pengurusan pangkalan data hubungan yang biasa digunakan yang menyediakan pelbagai fungsi untuk memproses dan mengendalikan data. Antaranya, fungsi REPLACE digunakan untuk menggantikan bahagian rentetan yang ditentukan. Dalam artikel ini, kami akan memperkenalkan cara menggunakan fungsi REPLACE untuk penggantian rentetan dalam MySQL dan menunjukkan penggunaannya melalui contoh kod. Mula-mula, mari kita lihat sintaks fungsi REPLACE: REPLACE(str,search_str,replace_str).

Apakah teknik untuk carian dan penggantian rentetan dalam Python? Apakah teknik untuk carian dan penggantian rentetan dalam Python? Oct 20, 2023 am 11:42 AM

Apakah teknik carian dan penggantian rentetan dalam Python? (Contoh kod khusus) Dalam Python, rentetan ialah jenis data biasa, dan kami sering menemui operasi carian rentetan dan menggantikan dalam pengaturcaraan harian. Artikel ini akan memperkenalkan beberapa teknik carian dan penggantian rentetan biasa, disertai dengan contoh kod tertentu. Untuk mencari subrentetan tertentu dalam rentetan, anda boleh menggunakan kaedah find() atau kaedah index() rentetan itu. Kaedah find() mengembalikan indeks kejadian pertama subrentetan dalam rentetan.

Bagaimana untuk menyegerakkan penjanaan nombor rawak dalam pemprosesan selari Golang? Bagaimana untuk menyegerakkan penjanaan nombor rawak dalam pemprosesan selari Golang? Jun 03, 2024 pm 02:53 PM

Menyegerakkan penjanaan nombor rawak dalam pengaturcaraan serentak Go: Gunakan mutex (sync.Mutex) untuk mengawal akses kepada penjana nombor rawak rand.Rand. Setiap goroutine memperoleh kunci mutex sebelum menjana nombor rawak dan melepaskan kunci mutex selepas menjananya. Ini memastikan bahawa hanya satu goroutine boleh mengakses penjana nombor rawak pada satu masa, menghapuskan perlumbaan data.

Bagaimana untuk menyelesaikan masalah menjana nombor rawak yang sama menggunakan fungsi php rand Bagaimana untuk menyelesaikan masalah menjana nombor rawak yang sama menggunakan fungsi php rand Mar 23, 2023 am 09:17 AM

Fungsi rand() menggunakan benih awal yang sama pada setiap panggilan. Benih awal pratetap diperoleh daripada masa sistem pengendalian, tetapi ia hanya mempunyai ketepatan mikrosaat. Iaitu, dalam tempoh masa yang sangat singkat, banyak panggilan fungsi rand() akan menggunakan benih awal yang sama, menghasilkan penjanaan nombor rawak yang sama. Jadi, bagaimana untuk menyelesaikan masalah ini?

apa itu mysql index apa itu mysql index Oct 08, 2023 am 11:47 AM

Indeks dalam MySQL bermaksud indeks Ia adalah struktur data yang digunakan untuk mempercepatkan pertanyaan jadual pangkalan data Indeks itu boleh dibandingkan dengan katalog buku kedudukan baris yang sepadan, menjadikan pangkalan data lebih cekap Cari dan akses data dengan cepat. Fungsi indeks adalah untuk meningkatkan kecekapan pertanyaan Tanpa indeks, pangkalan data perlu mengimbas seluruh baris demi baris untuk mencari data yang sepadan Kaedah ini akan memakan masa yang sangat lama dengan indeks, pangkalan data boleh Baris data yang diperlukan diletakkan dengan cepat dalam susunan, yang sangat meningkatkan kelajuan pertanyaan.

Masalah berjalan kod sumber PHP: penyelesaian ralat indeks Masalah berjalan kod sumber PHP: penyelesaian ralat indeks Mar 09, 2024 pm 09:24 PM

Masalah berjalan kod sumber PHP: Penyelesaian ralat indeks memerlukan contoh kod khusus PHP ialah bahasa skrip bahagian pelayan yang digunakan secara meluas yang sering digunakan untuk membangunkan tapak web dinamik dan aplikasi web. Walau bagaimanapun, kadangkala anda akan menghadapi pelbagai masalah semasa menjalankan kod sumber PHP, antaranya "ralat indeks" adalah situasi biasa. Artikel ini akan memperkenalkan beberapa punca biasa dan penyelesaian ralat indeks, dan menyediakan contoh kod khusus untuk membantu pembaca menangani masalah sedemikian dengan lebih baik. Penerangan Masalah: Semasa menjalankan program PHP

See all articles