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%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 に答える