Замена строки - PullRequest
       1

Замена строки

0 голосов
/ 25 августа 2010

Например, у меня есть эта строка:

$test_str = "num Test \n num Hello \n num World";

И мне нужно заменить эти num -ы на увеличивающиеся числа.вот так

"1 Test \n 2 Hello \n 3 World"

Как я могу это сделать?

Ответы [ 4 ]

0 голосов
/ 25 августа 2010

Вариант # 1 : PHP 5.3+ (анонимные функции)

$count=0;
echo preg_replace_callback('/\bnum\b/',
                           function($v){global $count; return ++$count;},
                           $test_str) ;

Вариант № 2 : регулярное выражение eval

$count=0;
echo preg_replace('/\bnum\b/e', '++$count', $test_str); 

Привет

БВУ

0 голосов
/ 25 августа 2010

вы можете использовать preg_replace_callback

$test_str = "num Test \n num Hello \n num World";

function replace_inc( $matches ) {
    static $counter = 0; // start value
    return $counter++;
}

$output = preg_replace_callback( '/num/', 'replace_inc', $test_str );

Cheers,Хагги

0 голосов
/ 25 августа 2010

Эта версия работает для любого числа "num"

<?php
  $num = 2;
  $s = "a num b num c num";

  while(strpos($s, "num") !== false) $s = preg_replace("/num/",$num++,$s,1);

  echo "$s\n";
?>
0 голосов
/ 25 августа 2010

вы можете сделать это substr_count. ( php doc

Затем переберите вашу строку и используйте счетчик для возврата. И поставить что-то вроде echo str_replace("num", $count, $str).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...