0

显然,Linkedin 对https://api.linkedin.com/v1/people/~中的 ~ 进行 urlencoding 很有趣, 我的问题是我使用了一个 oauth 库,所以我需要保持一致。有没有办法对字符串的一部分进行urlencode,所以如果我有~我可以把它去掉,然后在编码后把它放回原处?谢谢你

4

2 回答 2

2

用于rtrim()删除~然后再次附加它:

<?php
  $URL = 'https://api.linkedin.com/v1/people/~';
  echo urlencode( rtrim ( $URL, '~' ) ) . '~';
?>

这输出:

https%3A%2F%2Fapi.linkedin.com%2Fv1%2Fpeople%2F~

[编辑]:在 OP 澄清后:如果~中间有某处

用于str_replace放回字符~

<?php
   $URL = 'https://api.linkedin.com/v1/people/~:(id,first-name,last-name';
   echo str_replace('%7E','~',urlencode($URL));
?>

这输出:

https%3A%2F%2Fapi.linkedin.com%2Fv1%2Fpeople%2F~%3A%28id%2Cfirst-name%2Clast-name

于 2010-09-02T17:25:12.880 回答
2

对字符串进行编码,然后仅为~. 如果需要,您可以定义一个常量来保存该字符的 URL 编码值并将其替换。

define('TILDE_URLENCODE', urlencode('~')); // Or '%7E'
$url = str_replace(TILDE_URLENCODE, '~', urlencode($url));
于 2010-09-02T17:30:10.700 回答