Hitesh Rohilla Ответов: 0

Как выполнить совпадение регулярного выражения в строке и включить файл вместо найденного совпадения в PHP аналогично использованию шорткода wordpress


Что такое короткий код?
В WordPress некоторые плагины поставляются с такими функциями, как короткий код. Это работает так... Вы просто устанавливаете плагин и допустим его задача показать контактную форму там где вы хотите на своей странице так что просто поставьте [[форма]] на этом месте из back-end CMS и отражается контактная форма на соответствующей странице на front-end сайте.

Другой пример-скажем, ссылка, которая говорит Поделиться на Twitter пользователю так просто поставить [[щебетать]] везде, где вы хотите показать своего пользователя Поделитесь постом в Твиттере

Я выбираю оба примера из ЭТА ССЫЛКА поэтому для получения более подробной информации, пожалуйста, прочтите его. а чтобы лучше понять, посмотрите показанные снимки.

Чего я хочу достичь?
Мне нужна аналогичная функция в пользовательской CMS, которую я разрабатываю. Я много пытаюсь гуглить, но везде либо я нашел реализацию WordPress, либо ничего, кроме on ЭТА ССЫЛКА[^] в ответе Биньямина, где ясно показано, как это осуществить.

Какова моя идея реализовать это?
Поэтому идея состоит в том, чтобы поместить мой код в отдельный файл и импортировать содержимое файла типа include("файл") в PHP туда, куда я помещаю короткий код. В моем формате, который я реализовал, короткий код выглядит так {{ключевое слово}} а ключевое слово - это имя файла, который я хочу включить.

Я достигаю этого как предложение Биньямина[^] как показано ниже в моем коде.

<?php
  $query = "<DATABASE QUERY>";
  $result = mysqli_query($con,$query) or die(mysqli_connect_error());

  if($row = $reqult->fetch_array(MYSQLI_BOTH)){

    $str = $row["page_content"]; // column of database which contain content of page

    // replace all occurance of {{<KEYWORD>}} with content of similar file name
    echo preg_replace_callback("/\{{(.*?)\}}/", function($m){
      return include($m[1]);
    }, $str)

  }
?>


Этот короткий код {{ключевое слово}} сохраняется в базе данных вместе с другим содержимым страницы как она есть, и при извлечении содержимого на передний конец из базы данных он ищет короткий код и заменяет его содержимым файла с именем ключевого слова, которое используется в качестве ключевого слова в коротком коде

ШАГИ НА ПУТИ К ДОСТИЖЕНИЮ
1. приведенный выше код отвергает любое другое содержимое и отображает только содержимое файла, включенного с помощью короткого кода. Наряду с этим он также печатает одну строку для каждого короткого кода внизу после включения всего файла. Эта дополнительная строка не содержит ничего, кроме цифра один "1".

Чтобы решить эту проблему, я просто печатаю содержимое, извлеченное из базы данных, перед вызовом реализации короткого кода, но затем он показывает сам мой короткий код на переднем конце, поэтому, чтобы удалить его, я поставил еще один фильтр следующим образом
echo preg_replace("/\{{(.*?)\}}/","",$row["page_content"])

Волшебным образом это скрывают, что цифра один "1" дополнительная линия.

2. Теперь остается только одна проблема: из-за такой реализации, как я показал выше, я не могу включить содержимое файла [шорткода] между содержимым.

ЖИВОПИСНАЯ ИЛЛЮСТРАЦИЯ
Я сделал наглядную иллюстрацию проблемы. В котором я показал оба файла видео и рекомендации. показаны входные данные CMS из админ-панели, ее исходный код и то, что она сохранила в базе данных MySQL.

На иллюстрации, пожалуйста, внимательно посмотрите ожидаемый результат и выводите то, что я получаю прямо сейчас. Смотрите иллюстрацию здесь[^]

Для больших изображений и для лучшего понимания вы можете увидеть эта папка dropbox[^]

ТО, ЧТО Я ИЩУ
Поскольку я сам реализовал его таким образом, что все, хранящееся в базе данных, будет печататься сначала перед реализацией короткого кода, и поэтому я получаю этот вывод. Я думаю, что мне нужно удалить эту часть и нужно изменить preg_replace_callback() сама функция возвращает не только реализацию короткого кода, но и другое содержимое. Может ли кто-нибудь сказать мне, какую модификацию я должен сделать, чтобы достичь своей цели?

Заранее спасибо

!!!!!!!!! Обновление !!!!!!!!

Это старый вопрос, который до сих пор не решен. Любой, кто может решить эту проблему как можно скорее, как это срочно сейчас.

George Jonsson

Не используйте заглавные буквы, чтобы подчеркнуть свой вопрос. Это похоже на крик и грубость.

Hitesh Rohilla

Прошу прощения, если это звучит грубо, но я никогда этого не имел в виду. Мой английский не очень хорош, может быть, в этом и проблема... Никто никогда не учил меня, что значение верхнего регистра-это крик или грубость. Подобный ответ я получаю примерно 7-8 лет назад от модератора группы в сообществе Orkut. В то время люди начали длинную дискуссию на тему, что верхний регистр означает крик или нет, но это никогда не заканчивается выводом.

Что ж, мне очень жаль, если вам так показалось...

George Jonsson

Хорошо каждый день узнавать что-то новое. :-)

George Jonsson

Это очень многословный вопрос, но я должен признать, что не могу понять, что вы хотите сделать.
Что такое короткий код в этом контексте? Строка, номер телефона или старый компьютерный язык?

Hitesh Rohilla

Было трудно найти решение, поэтому я решил поместить все в один пост, чтобы, если кто-то еще ищет то же самое, он мог найти его здесь. Такие сайты, как stackoverflow и codeproject, являются лучшим местом для этого.

Я изменю вопрос так, чтобы он был легко понятен постановке задачи

И вы поймете короткий код, если будете разработчиком или пользователем WordPress. В WordPress некоторые плагины, такие как плагины контактных форм, поставляются с короткими кодами. вы просто создать свой макет контактной формы в плагин уголок и назначить коротких-код или ключевое слово, чтобы... и затем использовать этот короткий код или ключевое слово с некоторым форматированием, как [[шорт-код=форма form1]] в месте, где вы хотите, чтобы показать форма в админке сайта на CMS. И же форма вам автоматически отражается на конечном участке фронта. Я хочу добиться этой автоматизации

George Jonsson

Пожалуйста, сделайте это, и вам будет легче помочь.

Hitesh Rohilla

Я обновил весь вопрос. Я также сделал наглядное представление постановки задачи, которое доступно по предоставленной ссылке внизу. Надеюсь, это поможет вам лучше понять проблему.

George Jonsson

Таким образом, в основном то, что вы хотите сделать с регулярным выражением, - это найти и заменить {{testimonial}} содержимым файла testimonial.php. Это верно?

Hitesh Rohilla

Да... именно так :)

Hitesh Rohilla

Уважаемый Георгий,

Вы нашли какое-то решение?

BillWoodruff

это форум C#. ваш вопрос, похоже, касается PHP

Hitesh Rohilla

Так ли это? Я так не думаю... Если это так, то почему у нас есть тег & lt;pre> с атрибутом php или почему у нас есть тег PHP для назначения с вопросом

Mohibur Rashid

Это не Форум c#

0 Ответов