function MachineNameController::transliterate

Same name in other branches
  1. 8.9.x core/modules/system/src/MachineNameController.php \Drupal\system\MachineNameController::transliterate()
  2. 10 core/modules/system/src/MachineNameController.php \Drupal\system\MachineNameController::transliterate()

Transliterates a string in given language. Various postprocessing possible.

Parameters

\Symfony\Component\HttpFoundation\Request $request: The input string and language for the transliteration. Optionally may contain the replace_pattern, replace, lowercase parameters.

Return value

\Symfony\Component\HttpFoundation\JsonResponse The transliterated string.

1 string reference to 'MachineNameController::transliterate'
system.routing.yml in core/modules/system/system.routing.yml
core/modules/system/system.routing.yml

File

core/modules/system/src/MachineNameController.php, line 65

Class

MachineNameController
Controller routines for machine name transliteration routes.

Namespace

Drupal\system

Code

public function transliterate(Request $request) {
    $text = $request->query
        ->get('text');
    $langcode = $request->query
        ->get('langcode');
    $replace_pattern = $request->query
        ->get('replace_pattern');
    $replace_token = $request->query
        ->get('replace_token');
    $replace = $request->query
        ->get('replace');
    $lowercase = $request->query
        ->get('lowercase');
    $transliterated = $this->transliteration
        ->transliterate($text, $langcode, '_');
    if ($lowercase) {
        $transliterated = mb_strtolower($transliterated);
    }
    if (isset($replace_pattern) && isset($replace)) {
        if (!isset($replace_token)) {
            throw new AccessDeniedHttpException("Missing 'replace_token' query parameter.");
        }
        elseif (!$this->tokenGenerator
            ->validate($replace_token, $replace_pattern)) {
            throw new AccessDeniedHttpException("Invalid 'replace_token' query parameter.");
        }
        // Quote the pattern delimiter and remove null characters to avoid the e
        // or other modifiers being injected.
        $transliterated = preg_replace('@' . strtr($replace_pattern, [
            '@' => '\\@',
            chr(0) => '',
        ]) . '@', $replace, $transliterated);
    }
    return new JsonResponse($transliterated);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.