4 Stimmen

Twitter URL-Kodierung

Wir sind dabei, einen kleinen Twitter-Weihnachtswettbewerb zu starten, und ich bin auf ein kleines Problem gestoßen.

Um teilzunehmen, müssen die Teilnehmer einen Tweet in folgendem Format posten:

@user blah, blah, blah #hashtag

Derzeit habe ich ein Formular, in das sie ihre Antwort (das Blabla) eingeben, und ein PHP-Skript, das die gesamte Aussage kodiert und die Twitter-URL hinzufügt:

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

Anschließend wird der Benutzer zu Twitter weitergeleitet und der Status in das Aktualisierungsfeld eingetragen.

Während jedoch die Leerzeichen (%20) gut dekodiert werden, bleiben die Zeichen @ und # als %40 bzw. %23 erhalten, selbst wenn der Tweet gepostet wird. Ich kann die tatsächlichen Zeichen nicht in die URL einfügen, da Twitter dies für eine Suche hält.

Gibt es eine Möglichkeit, dieses Problem zu lösen? Ich möchte es tun, ohne dass Benutzername und Passwort usw. erforderlich sind, wenn möglich.

Für jede Hilfe sind wir dankbar.

0 Stimmen

Rich, können Sie den Teil "Dann wird der Benutzer zu Twitter weitergeleitet" näher erläutern? Sind Sie gerade dabei eine Umleitung von PHP nach der Verarbeitung ihrer Text?

7voto

Hejazi Punkte 15676

Ich hatte das gleiche Problem, und die Lösung war sehr einfach.

Verwenden Sie einfach
http://twitter.com/home?status=
anstelle von
http://www.twitter.com/home?status=
und es wird wie erwartet funktionieren, auch wenn der Text nicht in ASCII vorliegt.

Wenn Sie mehr über dieses seltsame Verhalten erfahren möchten, lesen Sie diesen Blogbeitrag: http://www.kilometer0.com/blog/2010/01/21/twitter-status-urls-and-ampersands/

Ich hoffe, das hilft jemandem.

0 Stimmen

Vielen Dank dafür :) Ich habe dies auch in meiner gewählten Antwort oben erwähnt!

4voto

FRotthowe Punkte 3642

Codieren Sie die Leerzeichen als + und es funktioniert: http://twitter.com/home?status=%40user+blah%2Cblah%2Cblah+%23hashtag

0 Stimmen

Ich musste auch das www herausnehmen, dann klappte es prima! Danke!

0 Stimmen

Das Entfernen des www hat bei mir nicht funktioniert, aber das Ersetzen der Leerzeichen durch + hat wunderbar funktioniert

2 Stimmen

Funktioniert bei mir nicht. Twitter schafft es nicht, die + Zeichen in Leerzeichen zu dekodieren. Oder es dekodiert nur das erste + und lässt dann den Rest stehen. Wer auch immer Twitters benutzerdefinierte URL-Dekodierung geschrieben hat, sollte auf sehr schmerzhafte Weise erschossen werden.

2voto

Lucas Jones Punkte 19251

Sie könnten versuchen, direkt auf Twitter zu posten:

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

...

0 Stimmen

Halten Sie es einfach, ja? Daran habe ich nicht gedacht! Ich möchte jedoch mehr Kontrolle über die Struktur des Tweets haben, ohne mich zu sehr auf JS zu verlassen. Danke, aber das könnte der Weg sein!

1 Stimmen

Ich weiß, was Sie meinen... Ich persönlich hätte nichts dagegen, mich auf JS zu verlassen (solange es nur funktioniert, wenn JS aktiviert ist, natürlich), da twitter.com will auch JS.

1voto

Joe D'Andrea Punkte 5121

Hm. Zumindest bei der Verwendung des neuen Twitter-Layouts ... das:

http://twitter.com/home?status=This+ist+ein+Test+%26+so+ist+das

... leitet auf diese Seite weiter (wenn Sie eingeloggt sind):

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

(man beachte das unverschlüsselte &) ... und der Tweet-in-waiting wird:

Dies ist ein Test

(

Unzählige Anpassungen und Variationen halfen nicht. (Seufz.)

Zugegebenermaßen eine skizzenhafte Abhilfe: Ändern Sie & (%26) in + (%2B). Es kann ratsam sein, dies mit einfachem Text zu tun, bevor man Entitäten (wieder) in die Gleichung einführt (z. B. %26 nicht in %2B ändern). Zweimal messen, einmal schneiden, wie man so schön sagt.

1voto

Jadiel Punkte 11

Nach einer Weile bekam ich dies... Sie müssen als UTF8 kodiert zu senden, können Sie Javascript verwenden, um das zu tun, aber ich bevorzuge PHP, weil mein Text auch von der tatabase.... kam

<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>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X