1

HTML文字列に対してstr_replaceを実行したいのですが、一致するアイテムが見つかるたびに値も増加します。

$link = 1;

$html = str_replace($this->link, $link, $html);

これはすべてを一度に置き換え、同じ文字列 $link を使用して、一致が見つかるたびに $link を増やしたいと考えています。出来ますか?

どうもありがとう

4

2 に答える 2

2

正規表現を使用して、置換の回数を返すことができます。

<?php
$string = "red green green blue red";

preg_replace('/\b(green)\b/i', '[removed]', $string, -1 , $results);
echo $results; // returns '2' as it replaces green twice with [removed]
?>
于 2012-04-29T05:09:00.640 に答える
1

私があなたを正しく理解している場合(各一致を成長する整数に置き換えたい場合)、使用を奨励する質問に対するコメントはpreg_replace_callback正しいようです:

$str = 'Hello World';
$cnt = 0;

function myCallback ( $matches ) {
  global $cnt;
  return ++$cnt;
}

// He12o Wor3d
echo preg_replace_callback( '/\l/', 'myCallback', $str );
于 2012-04-29T05:16:05.760 に答える