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

正規表現を使用して PHP で複数の結果を照合し、結果の 1 つをランダムに置き換える_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-14 10:09:16984ブラウズ

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

私のコードは次のとおりです:
[php]
//通常の処理関数
関数 rand_replace_callback($matches) {
グローバル $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){
戻る
}else {
return $matches[0];
}
//ランダム定期入れ替え機能 マッチングユニットが複数ある場合、そのうちの1体をランダムに入れ替えます。
//グローバル $g_rand_replace_num、$g_rand_replace_index、$g_rand_replace_str に注意してください。これら 3 つのグローバル変数は他の変数と競合しないようにしてください
//通常の処理関数に依存します。一致したユニットの総数を記録し、その総数の範囲内でランダムな値を取得し、通常の処理関数で等しいと判断された場合に処理します。
関数 rand_preg_replace($pattern, $t_g_rand_replace_str, $string)
{
グローバル $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; //実際の置換プロセス中のインデックス
$g_rand_replace_str = $t_g_rand_replace_str;
echo "現在、{$find_count} 件の一致が見つかりました
";
$ss=preg_replace_callback($pattern,"rand_replace_callback",$string);
$ss を返します
}
$string = "私には夢があります。私には夢があります。私には夢があります。";
echo rand_preg_replace('/I/', "地獄", $string);
考えを広げて、最初の結果が置き換えられるという概念を減らしたい場合はどうすればよいでしょうか? 最初に置き換えられることが良くない場合や、最初に置き換えられるためには少数の結果のみが必要な場合があります。
http://www.bkjia.com/PHPjc/477700.html
www.bkjia.com
tru​​e
http://www.bkjia.com/PHPjc/477700.html
技術記事

通常の一致する文字を使用します。すべてを置換するのが非常に簡単な場合は、preg_replace を使用します。しかし今、成功した複数のマッチング結果のうちの 1 つをランダムに置き換えたいと考えています...

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