ラボ > PHP:文字関連

PHP 特定の文字列を連番に置き換える(preg_replace_callback())

作成日:2019-11-12, 更新日:2019-11-12

サンプル

// 置き換え対象文字列
$repChar = '{{hoge}}';

// 対象文字列
$content = $repChar.'はdefで'.$repChar.'だ。それが'.$repChar.'なのだ。'.$repChar;

// 正規表現用にエスケープ
$preg = str_replace(array('{','}'), array("\\{","\\}"), $repChar);

// 前から順番に連番を割り振っていく
$num = 1;
$content = preg_replace_callback(
  '/'.$preg.'/u',
  function($matches) use(&$num){
    return $num++;
  },
  $content
);

echo $content;

※「return $num++;」のトコに好きな文字をすれば色々とできる。「return $matches[0] . '_' . $num++;」や「return '('.$num++.')';」みたいな感じ。