zf2是否有urlencode
的别名?
在zf2中,如果我想要rawurlencode
,我会使用:
$escaper = new Zend\Escaper\Escaper();
echo $escaper->escapeUrl('hello world');
哪个输出:
hello%20world
但是,我如何致电urlencode
?所需的输出是:
hello+world
如果简短的回答是我只需要直接拨打urlencode
,那就这样吧。
答案 0 :(得分:1)
简短的回答是否定的。原生rawurlencode()
函数根据RFC 3986生成输出,但urlencode()
不生成。这是在escapeUrl()
方法中使用rawurlencode背后的主要动机。我认为在这种情况下你有两个选择;
A. 您可以尝试扩展原生Escaper并覆盖escapeUrl()方法:
namespace My\Escaper;
use Zend\Escaper\Escaper as BaseEscaper;
class Escaper extends BaseEscaper
{
/**
* {@inheritDoc}
*/
public function escapeUrl($string)
{
return urlencode($string);
}
}
B。您可以简单地使用urlencode()
,如@ cheery在评论中说,这是一个原生函数。 (我个人认为这是最简单的解决方案)
<强>更新强>
你可能还希望read this answer深入了解urlencode和rawurlencode之间的区别。