@bitande
PHP

Как поочередно заменить строки на уникальные значения используя регулярные выражения?

Подскажите как можно реализовать такое:

есть строка
< p > text < p >

мне нужно поочередно, используя регулярные выражения, заменить теги на уникальные строки.

например, функция получает: < p > text < /p >
функция возвращает: #p1 text #p2
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Регулярные выражения
$str = '< p > text </p>';

$count = 0;
$str = preg_replace_callback('/< ?\/?\w+ ?\>/', function() use(&$count) {
  $count++;
  return "#p$count";
}, $str);

или, если разные тэги надо заменять независимо
$str = '< p > text </p> <b> fdsgdfsg</b> <p>???</p> <div>hello, world!!< /div>';

$count = [];
$str = preg_replace_callback('/< ?\/?(\w+) ?\>/', function($matches) use(&$count) {
  $key = $matches[1];
  $count[$key] = isset($count[$key]) ? $count[$key] + 1 : 1;
  return "#$key$count[$key]";
}, $str);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
lidacriss
@lidacriss
wtf
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы