PHP preg_replace regex — последовательно увеличивающиеся числа в заменах

Я пытаюсь создать шаблон preg_replace для добавления последовательно увеличивающихся чисел в качестве замены слов. Например, я хочу изменить это:

"Mary had a little lamb"

к этому:

"(:word_1:Mary:) (:word_2:had:) (:word_3:a:) (:word_4:little:) (:word_5:lamb:)"

Самые длинные строки никогда не будут содержать более 16 слов. Я не думаю, что это было бы такой проблемой, за исключением того, что я не могу найти что-либо по последовательно увеличивающимся числам. После большого разочарования я подумал о том, чтобы просто написать выражение, которое бы делало 16 отдельных (рекурсивных?) Проходов через каждую строку, но это казалось безумным. Любая помощь будет принята с благодарностью.

Спасибо!

РЕДАКТИРОВАТЬ:

По сути, мне просто нужно добавить каждое слово в строке с помощью «(: word_1:», «(: word_2:» и т. Д., Каждое из которых увеличивается постепенно).

0

Решение

Вот ваше решение. Попробуй это

<?php
$string = "Mary had a little lamb";
$count = 0;
$newstring = preg_replace_callback(
'/\S+/',
function($match) use (&$count) { return (( '(:word_' . $count++ . ':' .$match[0] . ':) ' )); },
$string
);
echo $newstring;
?>

Функция PHP preg_replace_callback сопоставляет шаблон регулярного выражения, заданный в качестве первого параметра, со строкой $, заданной в качестве третьего параметра. Вы также можете изменить шаблон регулярных выражений в соответствии с вашими потребностями, чтобы соответствовать требуемому значению. Я также использую $ count для передачи по ссылке, чтобы получить количество найденных слов.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]