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