php顶用正则匹配多个结果,随机替换其中一个结果
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);
扩展思考,我想减低第一个结果被替换的概念怎么办呢? 有些情况,第一个被替换不是很好,只需要少量的结果是第一个被替换。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

index.html代表網頁的首頁文件,是網站的預設頁面。當使用者造訪一個網站時,通常會先載入index.html頁面。 HTML(HypertextMarkupLanguage)是一種用來建立網頁的標記語言,index.html也是一種HTML檔。它包含網頁的結構和內容,以及用於格式化和佈局的標籤和元素。下面是一個範例的index.html程式碼:<

在使用Golang進行開發或學習過程中,我們可能會遇到undefined:rand.Seed的錯誤提示。這個錯誤通常會在需要使用隨機數產生器時出現,因為在Golang中需要先設定一個隨機數種子,才能使用rand套件中的函數。本篇文章將介紹如何解決這種錯誤。 1.引入math/rand包首先,我們需要在程式碼中引入math/rand包。在

MySQL是一種常用的關聯式資料庫管理系統,它提供了多種函數來處理和操作資料。其中,REPLACE函數是用來替換字串中的指定部分內容的。在本文中,將介紹如何在MySQL中使用REPLACE函數進行字串替換,並透過程式碼範例來示範其用法。首先,我們來了解REPLACE函數的語法:REPLACE(str,search_str,replace_str)其

Python中的字串尋找和替換技巧有哪些? (具體程式碼範例)在Python中,字串是一種常見的資料類型,我們在日常程式設計中經常會遇到字串的尋找和替換操作。本文將介紹一些常用的字串查找和替換技巧,並配以具體的程式碼範例。尋找子字串在字串中尋找特定的子字串可以使用字串的find()方法或index()方法。 find()方法傳回子字串在字串中第一次出現的位置索

在Go並發程式設計中同步隨機數產生:使用互斥鎖(sync.Mutex)控制對rand.Rand隨機數產生器的存取。每個goroutine在產生隨機數前取得互斥鎖,並在產生後釋放互斥鎖。這確保了同一時間只有一個goroutine可以存取隨機數產生器,消除了資料爭用。

rand()函數在每次呼叫時使用相同的初始種子(seeds)。預設的初始種子是從作業系統的時間獲得的,但是它只有微秒的精確度。也就是說,在極短的時間內,許多rand()函數呼叫都會使用相同的初始種子,導致相同的隨機數產生。那麼,如何解決這個問題呢?

MySQL中的index是索引的意思,是一種資料結構,用於加快資料庫表的查詢速度,索引可以類比於書籍的目錄,儲存了表中特定列的值和對應的行位置,使得資料庫能夠更快地定位和存取資料。索引的作用是提高查詢效率,在沒有索引的情況下,資料庫需要逐行掃描整個表來找到匹配的數據,這種方式在大型表中會非常耗時,而有了索引後,資料庫可以根據索引的順序快速定位到所需的資料行,大大提高了查詢速度。

PHP原始碼運行問題:index報錯解決方法,需要具體程式碼範例PHP是一種廣泛使用的伺服器端腳本語言,經常被用於開發動態網站和Web應用程式。然而,有時候在運行PHP原始碼時會遇到各種問題,其中「index報錯」是比較常見的情況。本文將介紹一些常見的index報錯原因以及解決方法,並提供具體的程式碼範例,幫助讀者更好地處理這類問題。問題描述:在執行PHP程式時
