@gleb-batishev

Как написать такой скрипт для генерации Title на PHP?

Мне часто приходится писать множество мета-тегов для сайтов, поэтому решил автоматизировать этот процесс. Готового решения не нашел, поэтому решил написать сам на php, но знаний не хватает, помогите.

Что должен делать скрипт

Генерируем description из 4 частей — случайно выбираем первую ("Купить", "Заказать", "Приобрести", "Предлагаем купить", "Предлагаем приобрести", "Предлагаем заказать"), вторую ("красивую", "элегантную", "дизайнерскую"), третья выступает товар ("юбку", "свитер", "бомбер"), четвертая ("в каталоге", "в интернет-магазине", "на сайте").

В чем проблема

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

Купить элегантную юбку в каталоге
Приобрести красивую куртку на сайте

и так далее. Пока такой код написал:

<?php
$first = array("Купить", "Заказать", "Приобрести", "Предлагаем купить", "Предлагаем приобрести", "Предлагаем заказать");
$first_echo = array_rand($first, 2);
echo $first[$first_echo[0]] . "\n";
$second = array("красивую", "элегантную", "дизайнерскую");
$second_echo = array_rand($second, 2);
echo $second[$second_echo[0]] . "\n";
$third = array("юбку", "кофту", "пальто");
$third_echo = array_rand($third, 2);
echo $third[$third_echo[0]] . "\n";
$fourth = array("в каталоге", "в интернет-магазине", "на сайте");
$fourth_echo = array_rand($fourth, 2);
echo $fourth[$fourth_echo[0]] . "\n";
?>


Но проблема в том, что:

1. третья часть будет дублироваться
2. выводит только один вариант, а нужно столько, сколько уникальных третьих элементов
  • Вопрос задан
  • 245 просмотров
Пригласить эксперта
Ответы на вопрос 2
@magarif
Программист
$first  = [ 'Купить', 'Заказать', 'Приобрести', 'Предлагаем купить', 'Предлагаем приобрести', 'Предлагаем заказать' ];
$second = [ 'красивую', 'элегантную', 'дизайнерскую' ];
$third  = [ 'юбку', 'кофту', 'пальто' ];
$fourth = [ 'в каталоге', 'в интернет-магазине', 'на сайте' ];

$out = [];
foreach ($third as $item) {
  $set = [];
  $set[] = array_rand($first);
  $set[] = array_rand($second);
  $set[] = $item;
  $set[] = array_rand($fourth);

  $out[] = implode(' ', $set);
}

echo implode(PHP_EOL, $out);
Ответ написан
Комментировать
KorniloFF
@KorniloFF
Работаю по font-end / JS
<?php

function genTitle()
{
	$first = array("Купить", "Заказать", "Приобрести", "Предлагаем купить", "Предлагаем приобрести", "Предлагаем заказать");
	$first_echo = array_rand($first);

	$second = array("красивую", "элегантную", "дизайнерскую");
	$second_echo = array_rand($second);

	$fourth = array("в каталоге", "в интернет-магазине", "на сайте");
	$fourth_echo = array_rand($fourth);

	foreach(["юбку", "кофту", "пальто"] as $num => $th) {
		@$titles[] = $first_echo[$num] . ' ' . $second_echo[$num] . ' ' . $th . ' ' . $fourth_echo[$num];
	}

	return $titles;
}

print_r(genTitle());
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы