Maison développement back-end tutoriel 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);
Copier après la connexion


 


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

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quel fichier est index.html ? Quel fichier est index.html ? Feb 19, 2024 pm 01:36 PM

index.html représente le fichier de la page d'accueil de la page Web et est la page par défaut du site Web. Lorsqu'un utilisateur visite un site Web, la page index.html est généralement chargée en premier. HTML (HypertextMarkupLanguage) est un langage de balisage utilisé pour créer des pages Web, et index.html est également un fichier HTML. Il contient la structure et le contenu d'une page Web, ainsi que les balises et les éléments utilisés pour le formatage et la mise en page. Voici un exemple de code index.html : &lt

Comment résoudre l'erreur « undéfini : rand.Seed » dans Golang ? Comment résoudre l'erreur « undéfini : rand.Seed » dans Golang ? Jun 25, 2023 am 08:34 AM

Pendant le processus de développement ou d'apprentissage de l'utilisation de Golang, nous pouvons rencontrer le message d'erreur undefined:rand.Seed. Cette erreur se produit généralement lorsque vous devez utiliser un générateur de nombres aléatoires, car dans Golang, vous devez définir une valeur de départ de nombres aléatoires avant de pouvoir utiliser la fonction du package rand. Cet article explique comment résoudre cette erreur. 1. Présentez le package math/rand. Tout d’abord, nous devons introduire le package math/rand dans le code. exister

Comment utiliser la fonction REPLACE pour remplacer une partie spécifiée d'une chaîne dans MySQL Comment utiliser la fonction REPLACE pour remplacer une partie spécifiée d'une chaîne dans MySQL Jul 25, 2023 pm 01:18 PM

MySQL est un système de gestion de bases de données relationnelles couramment utilisé qui fournit une variété de fonctions pour traiter et exploiter les données. Parmi eux, la fonction REPLACE est utilisée pour remplacer la partie spécifiée de la chaîne. Dans cet article, nous présenterons comment utiliser la fonction REPLACE pour le remplacement de chaînes dans MySQL et démontrerons son utilisation à travers des exemples de code. Tout d’abord, jetons un œil à la syntaxe de la fonction REPLACE : REPLACE(str, search_str, replace_str).

Quelles sont les techniques de recherche et de remplacement de chaînes en Python ? Quelles sont les techniques de recherche et de remplacement de chaînes en Python ? Oct 20, 2023 am 11:42 AM

Quelles sont les techniques de recherche et de remplacement de chaînes en Python ? (Exemple de code spécifique) En Python, les chaînes sont un type de données courant, et nous rencontrons souvent des opérations de recherche et de remplacement de chaînes dans la programmation quotidienne. Cet article présentera quelques techniques courantes de recherche et de remplacement de chaînes, accompagnées d'exemples de code spécifiques. Pour rechercher une sous-chaîne spécifique dans une chaîne, vous pouvez utiliser la méthode find() ou la méthode index() de la chaîne. La méthode find() renvoie l'index de la première occurrence de la sous-chaîne dans la chaîne.

Comment synchroniser la génération de nombres aléatoires dans le traitement parallèle Golang ? Comment synchroniser la génération de nombres aléatoires dans le traitement parallèle Golang ? Jun 03, 2024 pm 02:53 PM

Synchronisation de la génération de nombres aléatoires dans la programmation simultanée Go : utilisez un mutex (sync.Mutex) pour contrôler l'accès au générateur de nombres aléatoires rand.Rand. Chaque goroutine acquiert le verrou mutex avant de générer des nombres aléatoires et libère le verrou mutex après l'avoir généré. Cela garantit qu’un seul goroutine à la fois peut accéder au générateur de nombres aléatoires, éliminant ainsi les courses aux données.

Comment résoudre le problème de la génération des mêmes nombres aléatoires à l'aide de la fonction PHP Rand Comment résoudre le problème de la génération des mêmes nombres aléatoires à l'aide de la fonction PHP Rand Mar 23, 2023 am 09:17 AM

La fonction rand() utilise les mêmes graines initiales à chaque appel. La graine initiale par défaut est obtenue à partir de l'heure du système d'exploitation, mais elle n'a qu'une précision de la microseconde. Autrement dit, dans un laps de temps très court, de nombreux appels de fonction rand() utiliseront la même graine initiale, ce qui entraînera la même génération de nombres aléatoires. Alors, comment résoudre ce problème ?

qu'est-ce que l'index MySQL qu'est-ce que l'index MySQL Oct 08, 2023 am 11:47 AM

L'index dans MySQL signifie index. C'est une structure de données utilisée pour accélérer l'interrogation des tables de base de données. L'index peut être comparé au catalogue d'un livre. Il stocke les valeurs de colonnes spécifiques dans la table. positions de ligne correspondantes, ce qui rend la base de données plus efficace. Localisez et accédez rapidement aux données. La fonction de l'index est d'améliorer l'efficacité des requêtes. Sans index, la base de données doit analyser l'intégralité de la table ligne par ligne pour trouver les données correspondantes. Dans les grandes tables, cette méthode peut prendre beaucoup de temps. Les lignes de données requises sont rapidement localisées dans l'ordre, ce qui améliore considérablement la vitesse des requêtes.

Problème d'exécution du code source PHP : solution d'erreur d'index Problème d'exécution du code source PHP : solution d'erreur d'index Mar 09, 2024 pm 09:24 PM

Problème d'exécution du code source PHP : la résolution des erreurs d'index nécessite des exemples de code spécifiques. PHP est un langage de script côté serveur largement utilisé pour développer des sites Web et des applications Web dynamiques. Cependant, vous rencontrerez parfois divers problèmes lors de l'exécution du code source PHP, parmi lesquels "l'erreur d'index" est une situation courante. Cet article présentera quelques causes courantes et solutions aux erreurs d'index, et fournira des exemples de code spécifiques pour aider les lecteurs à mieux gérer ces problèmes. Description du problème : lors de l'exécution d'un programme PHP

See all articles