Я пытаюсь создать шаблон 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:» и т. Д., Каждое из которых увеличивается постепенно).
Вот ваше решение. Попробуй это
<?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 для передачи по ссылке, чтобы получить количество найденных слов.
Других решений пока нет …