2009-12-14 5 views
4

Nous sommes sur le point de lancer un petit concours de Noël sur twitter, et j'ai eu un petit problème.Twitter URL encoding

Pour entrer, les gens devront poster un tweet dans le format suivant:

@user blah, blah, blah #hashtag 

Actuellement, j'ai une forme où ils entrent dans leur réponse (bla, bla, bla) et un script PHP qui encode toute l'instruction et ajoute sur l'url twitter:

http://www.twitter.com/home?status=%40user%20blah%2Cblah%2Cblah%20%23hashtag 

prend alors à l'utilisateur de Twitter et met l'état dans le domaine de la mise à jour.

Cependant, alors que les espaces (% 20) sont décodés, les caractères @ et # restent respectivement% 40 &% 23, même lorsque le tweet est affiché. Je ne peux pas mettre les caractères réels dans l'url comme Twitter le fait pour une recherche.

Y at-il un moyen de résoudre ce problème? Je voudrais le faire sans exiger le nom d'utilisateur & mot de passe etc si possible.

Toute aide sera grandement appréciée.

+0

Riche, pouvez-vous élaborer sur la partie "Alors prend l'utilisateur à twitter"? Faites-vous juste une redirection de PHP après avoir traité leur texte? –

Répondre

2

Vous pouvez essayer de poster juste à Twitter:

<form action="http://www.twitter.com/home" method="GET"> 
    <textarea name="status"> 

...

+0

Restez simple, hein? Je n'ai pas pensé à ça! Cependant, j'aimerais avoir plus de contrôle sur la structure du tweet, sans trop compter sur JS. Merci, c'est peut-être le chemin! – Rich

+1

Je sais ce que vous voulez dire ... Personnellement, cela ne me dérangerait pas de m'en remettre à JS (à condition que cela ne fonctionne que lorsque JS est activé, évidemment), car http://twitter.com veut aussi JS. –

7

J'ai eu le même problème, et la solution était très simple.

Il suffit d'utiliser
http://twitter.com/home?status=
au lieu de
http://www.twitter.com/home?status=
et il va fonctionner comme prévu, même si le texte n'est pas en ASCII.

Si vous voulez en savoir plus de détails sur ce comportement étrange voir ce billet de blog: http://www.kilometer0.com/blog/2010/01/21/twitter-status-urls-and-ampersands/

Hope this helps quelqu'un.

+0

Bravo pour ça :) J'ai mentionné cela dans la réponse choisie ci-dessus aussi! – Rich

1

Hmm. Au moins lors de l'utilisation de la nouvelle mise en page Twitter ... ceci:

http://twitter.com/home?status=This+is+a+test+%26+So+is+this

... réoriente à ce (lorsque vous êtes connecté):

http://twitter.com/?status=This%20is%20a%20test%20&%20So%20is%20this

(remarquez le & non codé). .. et le tweet en attente devient:

Ceci est un test

:(

Les ajustements et les variations de myriade n'ont pas aidé. (Soupir.Solution de contournement admise: Ne modifiez pas & (% 26) à + (% 2B). Il peut être conseillé de le faire avec du texte brut avant de (ré) introduire des entités dans l'équation (par exemple, ne changez pas% 26 en% 2B). Mesurez deux fois, coupez une fois, comme on dit.

1

Après Wile je suis arrivé ce ... Vous devez envoyer comme UTF8, vous pouvez utiliser javascript pour faire cela, mais je prefere PHP parce que mon texte est venu aussi du tatabase ....

<a href="http://twitter.com/share?text=<?= urlencode(utf8_encode('HERE I USE THE TITLE OF MY ARTICLE FROM DATABASE')) ?>&lang=pt&url=<?= urlencode('http://jadielalves.com?s=stackoverflow') ;?>" target="_blank">SHARE ON TWITTER you can also put a twitter icon here... </a>