我有这个功能:
function after_char($char, $var) {
$get = explode($char, $var);
$text= $get[1];
echo $text;
}
我有html链接:
<a href="http://<?php after_char('@', urlencode($post_email)); ?>" target="_blank">Potwierdź aktywację konta w <?php after_char('@', htmlspecialchars($post_email, ENT_QUOTES)); ?>.</a>
两个启动函数中的变量应该如何编码?我真的需要写第二个相同的功能吗?首先是urlencode,第二个是htmlspecialchars,并在函数内部编码而不是在启动函数内编码?
你已经颠倒了操作的顺序。最好先在函数中准备数据,将其返回,然后对特定上下文进行编码并回显。
使用rawurlencode()
编码将进入href=
的URL。
使用htmlspecialchars
编码HTML上下文中显示的任何其他文本。
例:
<?php
function after_char($char, $var): string {
$get = explode($char, $var, 2);
return $get[1]; // returns the part after the $char
}
$result_of_after_char = after_char('@', $post_email);
?>
<a href="http://<?= urlencode($result_of_after_char); ?>" target="_blank"
>Potwierdź aktywację konta w <?= htmlspecialchars($result_of_after_char , ENT_QUOTES); ?>.</a>
另一方面,函数after_char
除了explode()
之外没有做任何其他事情。你可以完全摆脱这个功能:
$result_of_after_char = explode('@', $post_email, 2)[1];