Здравствуйте.
Есть php-переменная $html в которой какой-то html, а в нём встречаются вхождения типа {PHRASE=1}, {PHRASE=2}, {PHRASE=N}. Эти вхождения необходимо заменять соответствующими фразами из БД mySQL по их id, т.е. {PHRASE=5} должно замениться на фразу с id=5 и текстом "Фраза номер пять", и так далее.
Пишу функцию. Вот до чего я дошёл сам:
function rewriteHtml($html) {
$phrase = 'PHRASE';
if (mb_strpos($html, $phrase) === false){
// если слово PHRASE в тексте переменной не встречается, то всё понятно
$new_html = $html;
} else {
// а вот если встречается, то тут надо составить какую-то регулярку, и по ней как-то отыскать айдишники, а уж дальше я необходимые форазы из БД вытащу))
$new_html = ??????????;
}
return $new_html;
}
В регулярках вообще не силён, и плохо представляю дальнейший алгоритм работы.
Спасибо за помощь!
С использованием регулярных выражений для поиска числовых IDрешение будет, например, таким:
Исходные данные
$html = <<< HTML
<a href="#">{phrase=1}</a>
<p>{phrase=2}<strong>{phrase=3}<srong></p>
<b>{phrase=2}</b>
HTML;
Извлечение уникальных значений
if(preg_match_all("/{phrase=(\d+)}/", $html, $matches, PREG_PATTERN_ORDER)){
$ids = array_unique($matches[1]);
print_r($ids);
}
где флаг PREG_PATTER_ORDER определяет, что в matches[1] будут содержаться значения всех первых групп, а array_unique получает только уникальные идентификаторы из найденных.
можно и так
for($i=1; $i < count($data); $i++) {
str_replace('PHRASE_' . $i, $data[$i-1]);
}
где data это данные вытащеные с базы с соответственными id.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники