Вы можете создать фильтр веток, что-то вроде «mailTo» и сделать что-то вроде
<?php
namespace App\Twig;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
class AppExtension extends AbstractExtension
{
public function getFilters()
{
return array(
new TwigFilter('mailTo', array($this, 'mailTo'), array('is_safe' => 'html')),
);
}
public function mailTo(string $text)
{
if(preg_match_all('/[\p{L}0-9_.-]+@[0-9\p{L}.-]+\.[a-z.]{2,6}\b/u',$text,$mails)){
foreach($mails[0]as $mail ){
$text = str_replace($mail,'<a href="mailto:'.$mail.'">'.$mail.'</a>',$text);
}
}
return $text;
}
}
И затем использовать его в своем шаблоне вот так
contactInfo|mailTo
В любом случае, донне храните теги mailto: или html в базе данных, когда они всегда будут одинаковыми ...
документация по пользовательским фильтрам веток https://symfony.com/doc/current/templating/twig_extension.html