Twig : 转义十六进制文本
Twig : Unescape hexadecimal text
我尝试在我的网站上保护电子邮件地址,并使用下面的函数(twig 过滤器)对其进行编码:
/**
* The twig filter associated with this function is "encode_email"
*/
function encode_emailFilter($email)
{
$text = $email;
$text_encode = '';
for ($x=0; $x < strlen($text); $x++) {
$text_encode .= '&#x' . bin2hex($text[$x]).';';
}
return $text_encode;
}
所以,我这样编码我的电子邮件
{{ emailFromDatabase|encode_email }}
在我的 HTML 页面上,它显示
supermario@gmail.com
我尝试将“raw”添加到过滤器,但我总是得到相同的结果
{{ emailFromDatabase|raw|encode_email }}
但是,如果我直接显示十六进制而不用 {{ }}
包裹,则电子邮件地址会正确显示
<span>supermario@gmail.com</span>
//Returns
supermario@gmail.com
那么,我应该向我的 twig 变量添加什么过滤器才能使其正常工作?
提前感谢您的回答
你需要在末尾加上raw
:
{{ emailFromDatabase|encode_email|raw }}
因为你想要:
- 取变量
- 对其进行编码
- 然后不转义显示
我尝试在我的网站上保护电子邮件地址,并使用下面的函数(twig 过滤器)对其进行编码:
/**
* The twig filter associated with this function is "encode_email"
*/
function encode_emailFilter($email)
{
$text = $email;
$text_encode = '';
for ($x=0; $x < strlen($text); $x++) {
$text_encode .= '&#x' . bin2hex($text[$x]).';';
}
return $text_encode;
}
所以,我这样编码我的电子邮件
{{ emailFromDatabase|encode_email }}
在我的 HTML 页面上,它显示
supermario@gmail.com
我尝试将“raw”添加到过滤器,但我总是得到相同的结果
{{ emailFromDatabase|raw|encode_email }}
但是,如果我直接显示十六进制而不用 {{ }}
包裹,则电子邮件地址会正确显示
<span>supermario@gmail.com</span>
//Returns
supermario@gmail.com
那么,我应该向我的 twig 变量添加什么过滤器才能使其正常工作?
提前感谢您的回答
你需要在末尾加上raw
:
{{ emailFromDatabase|encode_email|raw }}
因为你想要:
- 取变量
- 对其进行编码
- 然后不转义显示