твое решение лишь инверсия нашего алгоритма. мы проверяем на совпадение и возвращаем замену иначе оригинал, а ты проверяешь на НЕ совпадение и возвращаешь оригинал иначе замену. и ничего естественного в этом я не вижу. если есть задача "заменить на таком-то вхождении" то фрагмент алгоритма её решения естественнее формулировать "мы достигли такого-то вхождения? да - заменить. иначе - вернуть оригинал" нежели "мы не достигли такого-то вхождения? да - оригинал. иначе - заменить". хотя для кого-то и секс с резиновой бабой может быть естественным.
Я не отрицаю, что я изменил. Ты доволен? Сейчас интересно, чтобы ТС нам показал, что он там решит. Или ему уже ничего не нужно.
тут ты заявляешь что у нас алгоритмы НЕРАБОЧИЕ. и приводишь алгоритм в котором просто инверсируешь логику сравнения. поскольку ты инверсировал только логику сравнения то и твой алгоритм НЕРАБОЧИЙ по твоим же собственным убеждениям. ты в нем не поменял алгоритма а только взаимно инвертировал один кусок. следовательно раз наш алгоритм с такой логикой нерабочий то и твой алгоритм с таким же куском - нерабочий. я лишь об этом хотел тебе сказать. при чем тут доволен или не доволен я. ты просто сам себе напротиворечил а я просто намекнул тебе что ты сам себе напротиворечил. не знаю как можно померить уровень довольства от того что кому-то намекаешь на то что он себе напротиворечил. ну пусть будет "я доволен". ок?
Здравствуйте! То есть, если мне надо сделать первую замену на 10-м вхождении, а вторую на 25-м получится так? Код (PHP): $s = 'test test 123 123 123 123 123 123 123 123 123 123 123 123 abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc'; var_dump(preg_replace(['/(.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*)(2)/U', '/(.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*)(b)/U'], ['${1}0', '${1}B'], $s)); А реально в цифровом значении задавать количество пропускаемых вхождений? Например, стоит задача получать предварительно полученные от пользователя. После получения этих данных мы имеем: Код (PHP): $firstcount = 3; $secondcount = 4; $firstreplace = "replace1"; $secondreplace = "replace2"; То есть получаем текст замены, и количество вхождений для замены.
Чем не устраивает str_repeat()? Код (PHP): $s1 = str_repeat('.*2', 10-1); $s2 = str_repeat('.*b', 25-1); preg_replace(["/({$s1}.*)(2)/U", "/({$s2}.*)(b)/U"], ['${1}0', '${1}B'], $s) п.с. работоспособность не проверял