src/EventSubscriber/ResponseCharsetSubscriber.php line 11

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  5. use Symfony\Component\HttpKernel\KernelEvents;
  6. class ResponseCharsetSubscriber implements EventSubscriberInterface
  7. {
  8.     public function onKernelResponse(ResponseEvent $event): void
  9.     {
  10.         if (!$event->isMainRequest()) {
  11.             return;
  12.         }
  13.         $response $event->getResponse();
  14.         $contentType $response->headers->get('Content-Type');
  15.         if ($contentType !== null && stripos($contentType'text/html') === false) {
  16.             return;
  17.         }
  18.         $response->setCharset('UTF-8');
  19.         if ($contentType === null) {
  20.             $response->headers->set('Content-Type''text/html; charset=UTF-8');
  21.             return;
  22.         }
  23.         if (stripos($contentType'charset=') === false) {
  24.             $response->headers->set('Content-Type'$contentType '; charset=UTF-8');
  25.             return;
  26.         }
  27.         $response->headers->set(
  28.             'Content-Type',
  29.             preg_replace('/charset=([^;]+)/i''charset=UTF-8'$contentType)
  30.         );
  31.     }
  32.     public static function getSubscribedEvents(): array
  33.     {
  34.         return [
  35.             KernelEvents::RESPONSE => 'onKernelResponse',
  36.         ];
  37.     }
  38. }