Недавно я разработал веб приложение, которое показывает точное время и долготу дня в 13 тысячах городах по всему миру. Естественно, это достаточно объемное приложение размером 26 тысяч страниц.

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

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

В дефолтной версии Яндекс предоставляет достаточно лаконичную и не стилизованную поисковую форму. Я же хотел вместо нее использовать свою. Вот такую.

Для того, чтобы получать запрос пользователя через форму и вставлять его в стандартный url выдачи Яндекса потребуется:

  1. Обернуть поисковую форму в тег <form> с указанием метода передачи данных POST, а также в параметре action указать ссылку на обработчик PHP.

2. Написать в обработчике PHP (в данном случае файл search_result.php) небольшой скрипт, который принимает запрос пользователя (ключевую фразу) в массиве $_POST, обрабатывает его и вставляет в параметр URL выдачи Яндекса. Далее, функция header перенаправляет нас на вновь сформированный URL. Не забудьте предварительно создать страницу с результатами выдачи Яндекса. Подробнее о том, как интегрировать поиск Яндекса здесь

ob_start();
$search = htmlspecialchars($_POST['search']);
$searchsimbol = array("`", "'", " ", "  ", "«", "»", "(", ")");
$zamenasimbol = array("+", "+", "+", "+", "+", "+", "+", "+");
$zapros = str_replace(  $searchsimbol,  $zamenasimbol,  $search  );
$new_url = "https://timeandsunrise.ru/search.php?searchid=2356347&text=".$zapros."&web=0#";
header('Location: '.$new_url);
ob_end_flush();

В результате мы получаем на входе.

А на выходе.

Не обращайте внимания на качество выдачи, сайт только начал индексироваться.