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