あなたはpreg_replace_callback
を使用することができます。
$random_string = '…';
$needle = array('pretty', 'beautiful', 'gorgeous', 'lovely', 'attractive', 'appealing');
$new_string = preg_replace_callback(
array_map(
function($v) { return '/'.preg_quote($v).'/'; }, // assuming $needle does not contain '/'
$needle),
function($matches) use($needle) {
do {
$new = $needle[rand(0, count($needle)-1)];
while($new != $matches[0]) {
return $new;
},
$random_string);
あなた$needle
配列が正規表現で特別な意味を持つ文字が含まれていない、我々は検索する前に、アレイの各項目にpreg_quote
を呼び出すことを確認します。
do{}while()
ループを実行する代わりに、配列をコピーして一致する単語を削除することもできます(実際のデータにほとんど依存しません:コピーするアイテムはほとんどありません→コピーしないでください)
これで問題はどこにありますか? – miku
商品ローテータを探しています – ArK
watしようとしました、いくつかのサンプルコードを投稿 –