Я довольно новичок в «продвинутом» PHP, и я борюсь с этой проблемой уже неделю. Я прочитал почти все на этом форуме, чтобы найти решение, но ничего не получилось.PHP Замените [plugin-something] с include_once
Я хочу получить контент из базы данных и заменить весь текст как [plugin-example] на include_once (example.php) Причина заключается в том, чтобы сделать что-то похожее на «короткий код» для системы управления контентом ,
Я пробовал несколько кодов, и этот является ближайшим к моему решению (я думаю/надеюсь). Проблема в том, что это заменяет оба [плагина] только последним значением соответствия (в данном случае слайдер).
<?php
//get database row
while($page = mysqli_fetch_array($hl_page)){
//regex
$search = "/\[plugin-(.*)\]/";
//get all matches with search
$content = htmlspecialchars_decode("This is my blog
[plugin-blog]
And this is my slider
[plugin-slider]");
preg_match_all($search, $content , $matches);
foreach($matches[1] as $match) {
$match;
}
enter code here
//get file
ob_start();
include_once(''.$match.'.php');
$replace = ob_get_contents();
ob_end_clean();
//echo content from page
echo preg_replace($search,$replace,$content);
}?>
, которые кодируют выходы:
текстовое содержание [include_once ('slider.php')] < --- должно быть blog.php более текстовое содержание [include_once ('слайдер. PHP '] < --- это один хороший
Вся помощь будет очень ценна
Он работает именно так, как я хотел, спасибо! – Saypontigohe
Небольшой вопрос, могу ли я использовать несколько разных заменяет в том же $ content здесь? Например, я хочу иметь короткий код, например [container], чтобы я мог разместить контейнер в cms? Возможно ли это в этом методе и где я должен это делать? – Saypontigohe
@Saypontigohe: Нет с этим методом вы не можете иметь дело с различными типами тегов. Если вы хотите это сделать, метод 'preg_replace_callback' будет более простым. Однако вы всегда можете использовать' preg_split', чтобы захватить весь контент тег и разбор его во второй раз, чтобы знать, что с ним делать: '\ [([^]] +)]' * (таким образом, вы избегаете создания гигантских строк и бесполезных конкатенаций) *. –