GarfieldOfficial
@GarfieldOfficial
Помог? - Отметь решением.

Как создать генератор?

Требуется создать генератор кода. Расскажу по подробнее, на сайте лежит код например сообщения для форума, в нем имеется например лексема {TEXT}. На другой странице сайта пользователь должен вставить в поле свой текст. Когда он нажимает сгенерировать, то его перебрасывает на другую страницу, где ему предоставляется код где лексема {TEXT} уже заменена на его текст который он вбил в поле ввода. Как подобное сделать?
  • Вопрос задан
  • 350 просмотров
Решения вопроса 1
Exomode
@Exomode
Архитектор ПО
$lexems = [
  "text" => "TEXT",
];

$data = [];

foreach ($_REQUEST as $k => $v) {
  if (array_key_exists($k, $lexems)) {
    $data[$k] => htmlspecialchars(trim($v));
  }
}

$sourceText = file_get_contents("/path/to/template.txt");

foreach ($data as $k => $v) {
  $sourceText = str_replace('{' . $lexems[$k] . '}', $v, $sourceText);
}

echo $sourceText;


Как оно работает:
1. На странице есть набор input с именами, соответствующими ключам ассоциативного массива $lexems;
2. После отправки данных на наш скрипт-обработчик, мы сохраняем все полученные данные в массив с теми же ключами;
3. Получаем исходный текст шаблона, где содержатся наши лексемы;
4. Проходимся массивом по полученным данным, выбираем по тем же ключам лексемы и заменяем их на пришедший с клиента текст, после чего выводим результат на экран.

Вместо str_replace можно использовать preg_replace или составить карту подмены и обойтись в str_replace без цикла. последнее самое предпочтительное в плане производительности на текстах небольшого объёма. Вариант с регулярками лучше использовать на массивных текстах.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
amux
@amux
alp.ac
str_replace или preg_replace

$_POST запросом отправляем в скрипт переменную, и уже меняем.

$text = "Требуется создать генератор кода. Расскажу по подробнее, на сайте лежит код например сообщения для форума, в нем имеется например лексема {TEXT}. На другой странице сайта пользователь должен вставить в поле свой текст. Когда он нажимает сгенерировать, то его перебрасывает на другую страницу, где ему предоставляется код где лексема {TEXT} уже заменена на его текст который он вбил в поле ввода. Как подобное сделать?";

$replaced = str_replace("{TEXT}", $_REQUEST["replace"], $text);

echo $replaced;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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