在Kullo,我们使用protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add(
'SvgLogo',
'sonata_type_model_list',
array('required' => false),
array(
'link_parameters' => array('context' => 'svg_file', 'provider' => 'sonata.media.provider.svg'),
)
)
}
格式的地址(例如username#domain.tld
),其中hi#kullo.net
是常量,类似于电子邮件地址中的#
。
现在,什么是用于将消息发送到给定地址的正确URI格式:
@
或kullo:username#domain.tld
?
第一个是首选,因为它很简单。但是考虑到URI的规则,我是否可以为我的自定义方案kullo:username%23domain.tld
制作#
除了片段分隔符之外的东西?
答案 0 :(得分:1)
每RFC 3986,哈希符号是保留的,但这并不意味着自定义URI方案必须将其用作分隔符:
2.2。保留字符
URI包括由分隔的组件和子组件 "保留"中的字符组。这些字符被调用 "保留"因为他们可能(或可能不会)被定义为分隔符 通用语法,每种特定于方案的语法,或者由 URI的解除引用算法的特定于实现的语法。 如果URI组件的数据与保留的数据冲突 字符作为分隔符的目的,那么冲突的数据必须是 在URI形成之前进行百分比编码。
[...]
因此,保护集中的字符受到保护 归一化,因此可以安全地用于特定方案 用于分隔数据子组件的特定于生产者的算法 在URI中。
[...]
生成URI的应用程序应对数据八位字节进行百分比编码 除非这些字符对应于保留集中的字符 URI方案特别允许表示其中的数据 零件。如果在URI组件中找到保留字符 对于该角色没有分隔角色,那么它必须是 解释为表示与其对应的数据八位字节 字符在US-ASCII中的编码。
所以你可以决定不逃避它,但你将失去规范化功能:
kullo:username#domain.tld != kullo:username%23domain.tld
但
kullo:username#domain.tld == kullo:%75sername#domain.tld