@@ -824,6 +824,56 @@ Symfony provides the following env var processors:
824824
825825 The ``env(defined:...)`` env var processor was introduced in Symfony 6.4.
826826
827+ .. _urlencode_environment_variable_processor:
828+
829+ ``env(urlencode:FOO)``
830+ Urlencode the content of ``FOO`` env var. This is especially useful when
831+ ``FOO`` value is not compatible with DSN syntax.
832+
833+ .. configuration-block::
834+
835+ .. code-block:: yaml
836+
837+ # config/packages/framework.yaml
838+ parameters:
839+ env(DATABASE_URL): ' mysql://db_user:foo@b$r@127.0.0.1:3306/db_name'
840+ encoded_database_url: ' %env(urlencode:DATABASE_URL)%'
841+
842+ .. code-block:: xml
843+
844+ <!-- config/packages/framework.xml -->
845+ <?xml version="1.0" encoding="UTF-8" ?>
846+ <container xmlns="http://symfony.com/schema/dic/services"
847+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
848+ xmlns:framework="http://symfony.com/schema/dic/symfony"
849+ xsi:schemaLocation="http://symfony.com/schema/dic/services
850+ https://symfony.com/schema/dic/services/services-1.0.xsd
851+ http://symfony.com/schema/dic/symfony
852+ https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
853+
854+ <parameters>
855+ <parameter key="env(DATABASE_URL)">mysql://db_user:foo@b$r@127.0.0.1:3306/db_name</parameter>
856+ <parameter key="encoded_database_url">%env(urlencode:DATABASE_URL)%</parameter>
857+ </parameters>
858+ </container>
859+
860+ .. code-block:: php
861+
862+ // config/packages/framework.php
863+ namespace Symfony\Component\DependencyInjection\Loader\Configurator;
864+
865+ use Symfony\Component\DependencyInjection\ContainerBuilder;
866+ use Symfony\Config\FrameworkConfig;
867+
868+ return static function (ContainerBuilder $container): void {
869+ $container->setParameter(' env(DATABASE_URL)' , ' mysql://db_user:foo@b$r@127.0.0.1:3306/db_name' );
870+ $container->setParameter(' encoded_database_url' , ' %env(urlencode:DATABASE_URL)%' );
871+ };
872+
873+ .. versionadded:: 6.4
874+
875+ The ``env(urlencode:...)`` env var processor was introduced in Symfony 6.4.
876+
827877It is also possible to combine any number of processors:
828878
829879.. configuration-block::
0 commit comments