我需要页面上的一些链接在Facebook,Google Plus,LinkedIn和Twitter上共享。我的链接看起来像这样:http://www.example.com/subdomain?key1=val1&key2=val2&key3=val3
几乎在所有情况下,共享URL都像这样:http://www.example.com/subdomain?key1=val1
删除第一个&之后的所有键和值。示例网址生成代码
<a href="http://www.linkedin.com/shareArticle?mini=true&url=~$requestedUrl|escape:'url'`" title="Share this on Linkedin" target="_new" class="lin"></a>
这将导致以下结果:
<a href="http://www.linkedin.com/shareArticle?mini=true&url=http://www.example.com/subdomain?key1=val1&key2=val2&key3=val3" title="Share this on Linkedin" target="_new" class="lin"></a>
$requestedUrl
是从我的PHP发送的,并且将继续在Facebook,gplus,linkedin和Twitter之间共享。
快速浏览您的完整URL ...
<a href="http://www.linkedin.com/shareArticle?mini=true&url=http://www.example.com/subdomain?key1=val1&key2=val2&key3=val3" title="Share this on Linkedin" target="_new" class="lin"></a>
所以,您DID转义了&
! BUT!您使用了HTML转义。您需要的是URL转义。它们非常非常不同。
&
变成带有HTML转义符的&
。但是&
变成具有URL编码的%26
。因此,您的代码应为...
<a href="http://www.linkedin.com/shareArticle?mini=true&url=http%3A%2F%2Fwww.example.com%2Fsubdomain%3Fkey1%3Dval1%26key2%3Dval2%26key3%3Dval3" title="Share this on Linkedin" target="_new" class="lin"></a>
因此,例如,我想共享此URL:http://www.revoltlib.com/?id=17
。里面也有?
!这是共享URL结果...
https://www.linkedin.com/sharing/share-offsite/?url=http%3A%2F%2Fwww.revoltlib.com%2F%3Fid%3D17
为我工作:
无论您定义或从中获取escape:'url'
,似乎都在完全错误地转义了类型。