php urlencode для linkedin - PullRequest
       12

php urlencode для linkedin

0 голосов
/ 02 сентября 2010

Судя по всему, Linkedin смешно относится к кодированию ~ in https://api.linkedin.com/v1/people/~. Моя проблема в том, что я использую библиотеку oauth, поэтому мне нужно, чтобы все было согласованно.Есть ли способ, чтобы urlencode только часть строки, поэтому в случае, если у меня есть ~ я могу пропустить это и положить его обратно в то же место после кодирования?спасибо

Ответы [ 2 ]

2 голосов
/ 02 сентября 2010

Кодируйте строку, затем декодируйте последовательность только для ~. При желании вы можете определить константу, содержащую значение в кодировке URL для этого символа, и заменить ее.

define('TILDE_URLENCODE', urlencode('~')); // Or '%7E'
$url = str_replace(TILDE_URLENCODE, '~', urlencode($url));
2 голосов
/ 02 сентября 2010

Используйте 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));
?>

Это выводит:

* 1 028 * HTTPS% 3A% 2F% 2Fapi.linkedin.com% 2Fv1% 2Fpeople% 2F ~% 3A% 28id% 2Cfirst имя-% 2Clast-имя
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...