ホームページ バックエンド開発 PHPチュートリアル PHP は正規表現を使用して複数の結果を照合し、結果の 1 つをランダムに置き換えます。

PHP は正規表現を使用して複数の結果を照合し、結果の 1 つをランダムに置き換えます。

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

php では、複数の結果を一致させるために通常の一致が使用され、結果の 1 つがランダムに置き換えられます。

をすべて置き換えるのが非常に簡単な場合は、preg_replace を使用します。ただし、成功した複数のマッチング結果のうち 1 つをランダムに置き換える必要があるため、少し面倒です。それを解決するために自分で関数を書きました。他に良い方法があるかどうかはわかりません。例「私には夢があります。私には夢があります。私には夢があります。私には夢があります。」は表現「/i/」と一致します。 上記の文字列には一致する結果が 4 つあり、そのうちの 1 つをランダムに置き換えるだけです。 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);
ログイン後にコピー



考え方を広げて、最初の結果が置き換えられるという概念を減らしたい場合はどうすればよいでしょうか? 最初に置き換えられることが良くない場合や、最初に置き換えられるためには少数の結果のみが必要な場合があります。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Index.html とは何のファイルですか? Index.html とは何のファイルですか? Feb 19, 2024 pm 01:36 PM

Index.html は Web ページのホームページ ファイルを表し、Web サイトのデフォルト ページです。ユーザーが Web サイトにアクセスすると、通常、index.html ページが最初に読み込まれます。 HTML (HypertextMarkupLanguage) は Web ページの作成に使用されるマークアップ言語であり、index.html も HTML ファイルです。これには、Web ページの構造とコンテンツに加えて、書式設定とレイアウトに使用されるタグと要素が含まれます。以下は、index.html コードの例です: &lt

golangの「unknown: rand.Seed」エラーを解決するにはどうすればよいですか? golangの「unknown: rand.Seed」エラーを解決するにはどうすればよいですか? Jun 25, 2023 am 08:34 AM

Golang を使用する開発または学習のプロセス中に、unknown:rand.Seed というエラー メッセージが表示されることがあります。 Golang では、 rand パッケージの関数を使用する前に乱数シードを設定する必要があるため、このエラーは通常、乱数ジェネレーターを使用する必要がある場合に発生します。この記事では、このエラーを解決する方法について説明します。 1. math/rand パッケージを導入する まず、math/rand パッケージをコードに導入する必要があります。存在する

REPLACE 関数を使用して MySQL の文字列の指定された部分を置換する方法 REPLACE 関数を使用して MySQL の文字列の指定された部分を置換する方法 Jul 25, 2023 pm 01:18 PM

MySQL は、データを処理および操作するためのさまざまな機能を提供する、一般的に使用されるリレーショナル データベース管理システムです。このうち、REPLACE関数は文字列の指定した部分を置き換える関数です。この記事では、MySQL で文字列を置換するための REPLACE 関数の使用方法を紹介し、コード例を通してその使用法を示します。まず、REPLACE 関数の構文を見てみましょう: REPLACE(str,search_str,replace_str)。

Python での文字列検索と置換のテクニックは何ですか? Python での文字列検索と置換のテクニックは何ですか? Oct 20, 2023 am 11:42 AM

Python での文字列検索と置換のテクニックは何ですか? (具体的なコード例) Python では文字列が一般的なデータ型であり、日常のプログラミングでは文字列の検索や置換操作によく遭遇します。この記事では、一般的な文字列の検索と置換のテクニックを、具体的なコード例とともに紹介します。文字列内の特定の部分文字列を検索するには、文字列の find() メソッドまたは Index() メソッドを使用できます。 find() メソッドは、文字列内で最初に出現した部分文字列のインデックスを返します。

Golangの並列処理で乱数生成を同期するにはどうすればよいですか? Golangの並列処理で乱数生成を同期するにはどうすればよいですか? Jun 03, 2024 pm 02:53 PM

Go 同時プログラミングでの乱数生成の同期: ミューテックス (sync.Mutex) を使用して、rand.Rand 乱数ジェネレーターへのアクセスを制御します。各ゴルーチンは乱数を生成する前にミューテックス ロックを取得し、生成後にミューテックス ロックを解放します。これにより、一度に 1 つの goroutine だけが乱数ジェネレーターにアクセスできるようになり、データ競合が排除されます。

PHPのrand関数を使用して同じ乱数を生成する問題を解決する方法 PHPのrand関数を使用して同じ乱数を生成する問題を解決する方法 Mar 23, 2023 am 09:17 AM

rand() 関数は、各呼び出しで同じ初期シードを使用します。デフォルトの初期シードはオペレーティング システムの時間から取得されますが、精度はマイクロ秒のみです。つまり、非常に短い期間内に、多くの rand() 関数呼び出しで同じ初期シードが使用され、同じ乱数が生成されます。では、この問題をどうやって解決すればよいでしょうか?

mysqlインデックスとは何ですか mysqlインデックスとは何ですか Oct 08, 2023 am 11:47 AM

MySQL のインデックスとはインデックスを意味します。データベース テーブルのクエリを高速化するために使用されるデータ構造です。インデックスは本のカタログにたとえることができます。テーブル内の特定の列の値を格納し、行の位置が対応するため、データベースの効率が向上し、データをすばやく見つけてアクセスできます。インデックスの機能は、クエリの効率を向上させることです。インデックスがないと、データベースは一致するデータを見つけるためにテーブル全体を 1 行ずつスキャンする必要があります。この方法は、大きなテーブルでは非常に時間がかかります。インデックスを使用すると、データベースは次のことができます。必要なデータ行が順番に素早く見つけられるため、クエリ速度が大幅に向上します。

PHP ソース コード実行の問題: インデックス エラーの解決策 PHP ソース コード実行の問題: インデックス エラーの解決策 Mar 09, 2024 pm 09:24 PM

PHP ソース コードの実行の問題: インデックス エラーの解決には特定のコード サンプルが必要です PHP は、動的 Web サイトや Web アプリケーションの開発によく使用される、広く使用されているサーバーサイド スクリプト言語です。ただし、PHP ソース コードを実行するとさまざまな問題が発生することがあります。その中でよくあるのが「インデックス エラー」です。この記事では、インデックス エラーの一般的な原因と解決策をいくつか紹介し、読者がそのような問題にうまく対処できるように具体的なコード例を示します。問題の説明: PHP プログラムの実行時

See all articles