<?php

/**
 * Prüft, ob eine Suchanfrage gültig ist.
 *
 * Erlaubt werden Buchstaben, Zahlen, Umlaute, typische Satzzeichen und Leerzeichen.
 * Die Länge muss zwischen 1 und 50 Zeichen liegen.
 *
 * @param string $query Zu prüfender Suchbegriff
 *
 * @return bool true wenn die Suche gültig ist, sonst false
 */
function searchQueryValidator($query)
{
    $query = trim($query);
    
    // Mindestens 1 Zeichen, maximal 50 Zeichen
    $length = mb_strlen($query);
    if ($length < 1 || $length > 50) {
        return false;
    }

    // Erlaubt Buchstaben (inkl. Umlaut/ß), Zahlen, Leerzeichen sowie ?, !, ., -, _
    $searchPattern = '/^[a-zA-Z0-9äöüÄÖÜß\s?!.,\-_]+$/u';

    return preg_match($searchPattern, $query) === 1;
}

/**
 * Prüft, ob das gewählte Treffer-Limit erlaubt ist.
 *
 * @param int|string $limit Das zu prüfende Limit
 *
 * @return bool true wenn das Limit 10, 20, 50 oder 100 ist, sonst false
 */
function searchLimitValidator($limit)
{
    $allowedLimits = [10, 20, 50, 100];
    return in_array((int)$limit, $allowedLimits, true);
}