Найти конкретную строку и заменить ее на приращение - PHP - PullRequest
0 голосов
/ 14 февраля 2012

В основном я ищу версию PHP этой темы: Поиск, замена и увеличение при каждом появлении строки

Заранее спасибо за помощь!

Ответы [ 5 ]

2 голосов
/ 14 февраля 2012
$str = 'a hello a some a';
$i = 0;

while (strpos($str, 'a') !== false)
{
    $str = preg_replace('/a/', $i++, $str, 1);
}

echo $str;
1 голос
/ 25 марта 2014
preg_replace(array_fill(0, 5, '/'.$findme.'/'), range(1, 5), $string, 1);

Пример:

preg_replace(array_fill(0, 5, '/\?/'), range(1, 5), 'a b ? c ? d ? e f g ? h ?', 1);

Выход

a b 1 c 2 d 3 e f g 4 h 5
0 голосов
/ 14 февраля 2012

Вот мои два цента

function str_replace_once($correct, $wrong, $haystack) {
    $wrong_string = '/' . $wrong . '/';
    return preg_replace($wrong_string, $correct, $haystack, 1);
}

Вышеприведенная функция используется для замены строки только один раз, но вы можете редактировать эту функцию для выполнения любой другой возможной операции.

0 голосов
/ 14 февраля 2012

Если я правильно понял ваш вопрос ...

<code><?php
//data resides in data.txt
$file = file('data.txt');
//new data will be pushed into here.
$new = array();
//fill up the array
foreach($file as $fK =>$fV) $new[] = (substr($fV, 0, 1)==">")? str_replace("num", $fK/2, $fV) : $fV;
//optionally print it out in the browser.
echo "<pre>";
print_r($new);
echo "
"; // опционально записать в файл ... $ output = fopen ("output.txt", 'w'); foreach ($ new as $ n) fwrite ($ output, $ n); fclose ($ выход);
0 голосов
/ 14 февраля 2012

Эй, вы можете сделать то же самое, используя preg_replace:

$num = 1;
while(strpos($str, $findme) !== ) {
 preg_replace("/$findme/", $num++, $str, 1);
}

это делает цикл, хотя он может найти вашу строку и заменить ее на приращение $ num. Поздравил

...