Здравствуйте.
Есть 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.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно вывести с бд последние статьи в сайдбар, не понимаю ничего, помогите пожалуйста)
Здравствуйте столкнулся с проблемой связной с освобождением памяти на запросТекший код выглядят перемерено так: