Я использую пользовательскую кнопку общего доступа в Твиттере «Создайте свою собственную кнопку твита» (https://dev.twitter.com/docs/tweet-button). В документации сказано, что я должен использовать параметры запроса для передачи параметров.
ПРОБЛЕМА: Twitter неправильно кодирует текстовый параметр, когда я передаю ему строку в кодировке URL. Запятая (,) отображается как %252C в сообщении твита. Другие символы также неправильно закодированы.
Я использую кодировку URL-адреса PHP (http://php.net/manual/en/function.urlencode.php), чтобы подготовить строку для вызова.
$text = urlencode("I just backed ". $project->getTitle().", an amazing new mobile app, on appbackr, where anyone can back mobile apps");
Затем я создаю ссылку на твиттер:
'http://www.twitter.com/share?url='.urlencode($projectUrl).'&via='.$via.'&text='.$text.'&related='.$user->getTwitterProfileName()
Последний вызов URL-адреса твиттера:
http://www.twitter.com/share?url=http%3A%2F%2Flocalhost%2Fapp%2Fbig-top-ballet&via=appbackr&text=I+just+backed+Big+Top+Ballet%2C+an+amazing+new+mobile+app%2C+on+appbackr%2C+where+anyone+can+back+mobile+apps&related=philippberner
Как только страница открывается в браузере (Chrome и Firefox), Twitter перенаправляет URL-адрес на:
https://twitter.com/intent/tweet?related=philippberner&text=I+just+backed+Big+Top+Ballet%252C+an+amazing+new+mobile+app%252C+on+appbackr%252C+where+anyone+can+back+mobile+apps&url=http%253A%252F%252Flocalhost%252Fapp%252Fbig-top-ballet&via=appbackr
Это отобразит следующее сообщение в окне твита:
Я только что поддержал Big Top Ballet%2C в потрясающем новом мобильном приложении%2C на appbackr%2C, где каждый может поддержать мобильные приложения через @appbackr
Он преобразует Top+Ballet%2C+an+amazing в Top+Ballet%252C+an+amazing. Запятая отображается правильно, когда я вручную меняю %252C на %2C в URL-адресе Twitter.