Heim Backend-Entwicklung PHP-Tutorial 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);
Nach dem Login kopieren


 


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

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Datei ist index.html? Welche Datei ist index.html? Feb 19, 2024 pm 01:36 PM

index.html stellt die Homepage-Datei der Webseite dar und ist die Standardseite der Website. Wenn ein Benutzer eine Website besucht, wird normalerweise zuerst die Seite index.html geladen. HTML (HypertextMarkupLanguage) ist eine Auszeichnungssprache, die zum Erstellen von Webseiten verwendet wird, und index.html ist ebenfalls eine HTML-Datei. Es enthält die Struktur und den Inhalt einer Webseite sowie Tags und Elemente, die zur Formatierung und zum Layout verwendet werden. Hier ist ein Beispiel für index.html-Code: &lt

Wie behebe ich den Fehler „undefiniert: rand.Seed' in Golang? Wie behebe ich den Fehler „undefiniert: rand.Seed' in Golang? Jun 25, 2023 am 08:34 AM

Während des Entwicklungs- oder Lernprozesses bei der Verwendung von Golang kann es sein, dass wir auf die Fehlermeldung undefiniert:rand.Seed stoßen. Dieser Fehler tritt normalerweise auf, wenn Sie einen Zufallszahlengenerator verwenden müssen, da Sie in Golang einen Zufallszahlen-Startwert festlegen müssen, bevor Sie die Funktion im Rand-Paket verwenden können. In diesem Artikel wird erläutert, wie Sie diesen Fehler beheben können. 1. Führen Sie das Paket math/rand ein. Zuerst müssen wir das Paket math/rand in den Code einführen. existieren

So verwenden Sie die REPLACE-Funktion, um einen bestimmten Teil einer Zeichenfolge in MySQL zu ersetzen So verwenden Sie die REPLACE-Funktion, um einen bestimmten Teil einer Zeichenfolge in MySQL zu ersetzen Jul 25, 2023 pm 01:18 PM

MySQL ist ein häufig verwendetes relationales Datenbankverwaltungssystem, das eine Vielzahl von Funktionen zum Verarbeiten und Betreiben von Daten bietet. Unter anderem wird die REPLACE-Funktion verwendet, um den angegebenen Teil der Zeichenfolge zu ersetzen. In diesem Artikel stellen wir die Verwendung der REPLACE-Funktion zum Ersetzen von Zeichenfolgen in MySQL vor und demonstrieren ihre Verwendung anhand von Codebeispielen. Schauen wir uns zunächst die Syntax der REPLACE-Funktion an: REPLACE(str,search_str,replace_str).

Was sind die Techniken zum Suchen und Ersetzen von Zeichenfolgen in Python? Was sind die Techniken zum Suchen und Ersetzen von Zeichenfolgen in Python? Oct 20, 2023 am 11:42 AM

Welche Techniken gibt es zum Suchen und Ersetzen von Zeichenfolgen in Python? (Spezifisches Codebeispiel) In Python sind Zeichenfolgen ein häufiger Datentyp, und in der täglichen Programmierung stoßen wir häufig auf Such- und Ersetzungsvorgänge für Zeichenfolgen. In diesem Artikel werden einige gängige Techniken zum Suchen und Ersetzen von Zeichenfolgen vorgestellt, begleitet von spezifischen Codebeispielen. Um einen bestimmten Teilstring in einem String zu finden, können Sie die Methode find() oder index() des Strings verwenden. Die Methode find() gibt den Index des ersten Vorkommens des Teilstrings im String zurück.

Wie synchronisiert man die Zufallszahlengenerierung in der Golang-Parallelverarbeitung? Wie synchronisiert man die Zufallszahlengenerierung in der Golang-Parallelverarbeitung? Jun 03, 2024 pm 02:53 PM

Synchronisieren der Zufallszahlengenerierung in der gleichzeitigen Go-Programmierung: Verwenden Sie einen Mutex (sync.Mutex), um den Zugriff auf den Zufallszahlengenerator rand.Rand zu steuern. Jede Goroutine erhält die Mutex-Sperre, bevor sie Zufallszahlen generiert, und gibt die Mutex-Sperre nach der Generierung frei. Dadurch wird sichergestellt, dass jeweils nur eine Goroutine auf den Zufallszahlengenerator zugreifen kann, wodurch Datenrennen vermieden werden.

So lösen Sie das Problem der Generierung derselben Zufallszahlen mithilfe der PHP-Rand-Funktion So lösen Sie das Problem der Generierung derselben Zufallszahlen mithilfe der PHP-Rand-Funktion Mar 23, 2023 am 09:17 AM

Die Funktion rand() verwendet bei jedem Aufruf dieselben anfänglichen Startwerte. Der voreingestellte anfängliche Startwert wird aus der Uhrzeit des Betriebssystems ermittelt, hat jedoch nur eine Genauigkeit im Mikrosekundenbereich. Das heißt, innerhalb einer sehr kurzen Zeitspanne verwenden viele rand()-Funktionsaufrufe denselben anfänglichen Startwert, was zur gleichen Zufallszahlengenerierung führt. Wie kann man dieses Problem lösen?

Was ist ein MySQL-Index? Was ist ein MySQL-Index? Oct 08, 2023 am 11:47 AM

Der Index in MySQL bedeutet Index. Es handelt sich um eine Datenstruktur, die zur Beschleunigung der Abfrage von Datenbanktabellen verwendet wird. Der Index kann mit dem Katalog eines Buches verglichen werden entsprechende Zeilenpositionen, wodurch die Datenbank schneller lokalisiert und darauf zugegriffen werden kann. Die Funktion des Index besteht darin, die Abfrageeffizienz zu verbessern. Bei großen Tabellen kann die Datenbank die gesamte Tabelle zeilenweise durchsuchen Die benötigten Datenzeilen werden schnell in der Reihenfolge gefunden, was die Abfragegeschwindigkeit erheblich verbessert.

Problem beim Ausführen des PHP-Quellcodes: Indexfehlerlösung Problem beim Ausführen des PHP-Quellcodes: Indexfehlerlösung Mar 09, 2024 pm 09:24 PM

Problem bei der Ausführung des PHP-Quellcodes: Für die Indexfehlerbehebung sind spezifische Codebeispiele erforderlich. PHP ist eine weit verbreitete serverseitige Skriptsprache, die häufig zur Entwicklung dynamischer Websites und Webanwendungen verwendet wird. Allerdings treten beim Ausführen von PHP-Quellcode manchmal verschiedene Probleme auf, darunter auch „Indexfehler“. In diesem Artikel werden einige häufige Ursachen und Lösungen für Indexfehler vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern zu helfen, solche Probleme besser zu bewältigen. Problembeschreibung: Beim Ausführen eines PHP-Programms

See all articles