diff --git a/core/lib/Drupal/Core/Routing/UrlGenerator.php b/core/lib/Drupal/Core/Routing/UrlGenerator.php index f233972..2261eb4 100644 --- a/core/lib/Drupal/Core/Routing/UrlGenerator.php +++ b/core/lib/Drupal/Core/Routing/UrlGenerator.php @@ -54,7 +54,9 @@ class UrlGenerator implements UrlGeneratorInterface { /** * Overrides characters that will not be percent-encoded in the path segment. * - * The first two elements are the first two parameters of str_replace(). + * The first two elements are the first two parameters of str_replace(), so + * if you override this variable you can also use arrays for the encoded + * and decoded characters. * * @see \Symfony\Component\Routing\Generator\UrlGenerator */ @@ -62,8 +64,8 @@ class UrlGenerator implements UrlGeneratorInterface { // the slash can be used to designate a hierarchical structure and we want allow using it with this meaning // some webservers don't allow the slash in encoded form in the path for security reasons anyway // see http://stackoverflow.com/questions/4069002/http-400-if-2f-part-of-get-url-in-jboss - ['%2F'], // Map from these encoded characters. - ['/'], // Map to these decoded characters. + '%2F', // Map from these encoded characters. + '/', // Map to these decoded characters. ]; /** @@ -215,8 +217,7 @@ protected function doGenerate(array $variables, array $defaults, array $tokens, } // The contexts base URL is already encoded (see Symfony\Component\HttpFoundation\Request) - list($search_strings, $replacement_strings) = $this->decodedChars; - $url = str_replace($search_strings, $replacement_strings, rawurlencode($url)); + $url = str_replace($this->decodedChars[0], $this->decodedChars[1], rawurlencode($url)); // Drupal paths rarely include dots, so skip this processing if possible. if (strpos($url, '/.') !== FALSE) {