どうやら Linkedin は、https: //api.linkedin.com/v1/people/~ の ~ を urlencoding するのがおかしいようです。 私の問題は、oauth ライブラリを使用しているため、一貫性を保つ必要があることです。文字列の一部だけを urlencode する方法はありますか? ~ がある場合は、それを省略して、エンコード後に同じ場所に戻すことができますか? ありがとうございました
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%2C名%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 に答える