Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Yahoo Api Problem

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
Michael1967
PostRank 9
PostRank 9
Beiträge: 2158
Registriert: 26.10.2005, 23:51

Beitrag von Michael1967 » 14.08.2008, 15:06

Ich hätte mal eine schwere Frage. Ich komme da einfach nicht weiter.
Über die Yahoo Api +Script wird eine Abfrage mit folgendem Text abgesetzt.

Ich bin ein Beispieltext

Das funktioniert.

Suche ich aber nach –

Ich bin ein Beispieltext für

bekomme ich einen Error 400 -- Bad Request.

Im zweiten Beispiel befindet sich ein Sonderzeichen/Umlaute und dann funktioniert die Abfrage nicht mehr.

[code]$request='https://search.yahooapis.com/WebSearchS ... ber_of_res;[/code]

Hier in - urlencode($text_selection) steht der Text.

Was genau läuft hier falsch? Muss ich die Umlaute umwandeln damit ich über die Yahoo Api abfragen kann? Wen ja – wie genau funktioniert das?

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Burns
PostRank 5
PostRank 5
Beiträge: 296
Registriert: 10.06.2008, 18:54

Beitrag von Burns » 15.08.2008, 01:43

hallo,

umlaute musst du mit

utf8_encode(); für Yahoo codieren und Sonderzeichen würd ich ganz einfach rausfiltern. Für das Suchergebnis sind die bestimmt nicht wichtig.

$string = preg_replace("/[^a-zA-Z0-9 ä ö ü ß Ä Ö Ü ]/"," ",$string);

Michael1967
PostRank 9
PostRank 9
Beiträge: 2158
Registriert: 26.10.2005, 23:51

Beitrag von Michael1967 » 15.08.2008, 09:15

Wenn sich Umlaute in der Beschreibung befinden, dann kommt ein

Error 400 -- Bad Request

Der Link -

https://search.yahooapis.com/WebSearchS ... esults=100

Ich denke mal hier liegt der Hund begraben - +f%FCr+

Aber ich habe keine Ahnung wie das korrekt aussehen muss, damit es auch funktioniert.

Burns
PostRank 5
PostRank 5
Beiträge: 296
Registriert: 10.06.2008, 18:54

Beitrag von Burns » 15.08.2008, 12:21

ich hab's und bei mir funst es nun endlich

Code: Alles auswählen

    $array_1 = array&#40;"ä","ü","ö","Ä","Ü","Ö","ß","'","< ",">",'"',"§","€","²","³"&#41;;
    $array_2 = array&#40;"ä","ü","ö","Ä","Ü","Ö","ß","&apos;","<",">",""","&sect;","EUR","&sup2;","&sup3;"&#41;; 
    $string = str_replace&#40;$array_1,$array_2,$string&#41;;
kann erweitert werden falls ich Sonderzeichen vergessen habe

Argh, die Codeanzeige wandelt die Zeichen um so dass ich das hier nicht posten kann

ä = & # 228
ü = & # 252

weiss aber nicht wie sich diese codierung nennt, hoffe es hilft weiter

Michael1967
PostRank 9
PostRank 9
Beiträge: 2158
Registriert: 26.10.2005, 23:51

Beitrag von Michael1967 » 15.08.2008, 13:27

Und an welcher Stelle/Variable hast du das jetzt eingebaut?

Ich verstehe den Sinn deiner Funktion auch nicht. Wie soll damit eine Umwandlung stattfinden?

Burns
PostRank 5
PostRank 5
Beiträge: 296
Registriert: 10.06.2008, 18:54

Beitrag von Burns » 15.08.2008, 15:06

Code: Alles auswählen

$request='http&#58;//search.yahooapis.com/WebSearchService/V1/webSearch?appid='.$application_ID.'&query='.urlencode&#40;$text_selection&#41;.'&output=php&adult_ok=1&type=phrase&region='.$country.'&results='.$number_of_res;



das ist ja dein Code, du musst natürlich die Variable $text_selection nach umlauten durchsuchen lassen und umwandeln

ich kann hier den genauen Code nicht posten, das forum wandelt den Quelltext leider um , macht aus & # 228 gleich wieder ein ä
sende mir mal deine Email als PM und ich sende Dir den richtigen Code

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 15.08.2008, 15:12

Michael1967 hat geschrieben:Im zweiten Beispiel befindet sich ein Sonderzeichen/Umlaute und dann funktioniert die Abfrage nicht mehr.
[…]
Was genau läuft hier falsch? Muss ich die Umlaute umwandeln, damit ich über die Yahoo-API abfragen kann?
Das steht in der Yahoo-Anleitung: „query | string (required) | The query to search for (UTF-8 encoded).“ Auf Deutsch: Die Texte müssen utf-8-kodiert sein (und anschließend auch noch URL-kodiert). Du benutzt augenscheinlich iso-8859-1, nicht utf-8.
Wen ja – wie genau funktioniert das?
Burns hat bereits geschrieben, dass du bei PHP dafür die Funktion utf8_encode() benutzen kannst. Ich persönlich würde eher iconv() empfehlen, da utf8_encode() auf den Zeichensatz iso-8859-1 beschränkt ist, im Web aber häufig (und unbewusst) dessen Erweiterung windows-1252 verwendet wird. Beide Zeichensätze gleichen sich weitestgehend, nennenswerte Ausnahme bildet das Eurozeichen, das in iso-8859-1 nicht vorhanden ist. Mit iconv() und windows-1252 als Eingangskodierung ist man auf der sicheren Seite (oder, noch besser, man stellt gleich auf utf-8 um).

Mit utf8_encode():

Code: Alles auswählen

$request='http&#58;//search.yahooapis.com/WebSearchService/V1/webSearch?appid='.$application_ID.'&query='.urlencode&#40;utf8_encode&#40;$text_selection&#41;&#41;.'&output=php&adult_ok=1&type=phrase&region='.$country.'&results='.$number_of_res;
Mit iconv() und windows-1252:

Code: Alles auswählen

$request='http&#58;//search.yahooapis.com/WebSearchService/V1/webSearch?appid='.$application_ID.'&query='.urlencode&#40;iconv&#40;"WINDOWS-1252", "UTF-8", $text_selection&#41;&#41;.'&output=php&adult_ok=1&type=phrase&region='.$country.'&results='.$number_of_res;

Burns
PostRank 5
PostRank 5
Beiträge: 296
Registriert: 10.06.2008, 18:54

Beitrag von Burns » 15.08.2008, 16:57

Ahhh, super
das funktioniert sehr gut und macht meine Umwandlung der Umlaute unnötig.

THX Mork, nano nano ;)

Michael1967
PostRank 9
PostRank 9
Beiträge: 2158
Registriert: 26.10.2005, 23:51

Beitrag von Michael1967 » 15.08.2008, 18:57

Das funktioniert bei mir auch nach dem Tauschen der Zeile nicht.

Muss ich da noch was beachten?

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 15.08.2008, 22:05

Michael1967 hat geschrieben:Das funktioniert bei mir auch nach dem Tauschen der Zeile nicht.
Welchen Code hast du denn jetzt und welche Yahoo-URL wird aufgerufen bzw. liefert den Fehler?

Michael1967
PostRank 9
PostRank 9
Beiträge: 2158
Registriert: 26.10.2005, 23:51

Beitrag von Michael1967 » 15.08.2008, 22:13

Den zweiten Code habe ich eingebaut.

Ausgabe -

Code: Alles auswählen

http&#58;//search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&query=und+Internet+Marketing+Steigern+Sie+den+Wert+Ihrer+Webseite&output=php&adult_ok=1&type=phrase®ion=de&results=50http&#58;//search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&query=Marketing+Steigern+Sie+den+Wert+Ihrer+Webseite+mit+einem&output=php&adult_ok=1&type=phrase®ion=de&results=50http&#58;//search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&query=Sie+den+Wert+Ihrer+Webseite+mit+einem+Eintr%C3%A4g+in&output=php&adult_ok=1&type=phrase®ion=de&results=50
Da ist ein "ä" im Text *gg*


Nehme ich das "ä" raus funktioniert alles und es kommt -

Code: Alles auswählen

http&#58;//search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&query=Informationsportal+und+Internet+Marketing+Steigern+Sie+den+Wert+Ihrer&output=php&adult_ok=1&type=phrase®ion=de&results=50http&#58;//search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&query=Internet+Marketing+Steigern+Sie+den+Wert+Ihrer+Webseite+mit&output=php&adult_ok=1&type=phrase®ion=de&results=50http&#58;//search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&query=Sie+den+Wert+Ihrer+Webseite+mit+einem+Eintrag+in&output=php&adult_ok=1&type=phrase®ion=de&results=50http&#58;//search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&query=Sie+den+Wert+Ihrer+Webseite+mit+einem+Eintrag+in&output=php&adult_ok=1&type=phrase®ion=de&results=50http&#58;//search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&query=Wert+Ihrer+Webseite+mit+einem+Eintrag+in+den+Webkatalog&output=php&adult_ok=1&type=phrase®ion=de&results=50

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 15.08.2008, 22:35

Michael1967 hat geschrieben:

Code: Alles auswählen

http&#58;//search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&query=und+Internet+Marketing+Steigern+Sie+den+Wert+Ihrer+Webseite&output=php&adult_ok=1&type=phrase®ion=de&results=50http&#58;//search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&query=Marketing+Steigern+Sie+den+Wert+Ihrer+Webseite+mit+einem&output=php&adult_ok=1&type=phrase®ion=de&results=50http&#58;//search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&query=Sie+den+Wert+Ihrer+Webseite+mit+einem+Eintr%C3%A4g+in&output=php&adult_ok=1&type=phrase®ion=de&results=50
Also das sind erstens mal drei aneinandergeklebte URLs, nicht eine, entsprechend beschwert Yahoo sich unter anderem über das mehrfache Auftreten des query-Parameters:

<Error>The following errors were detected:
<Message>multiple occurences: query</Message>
<Message>value out of range: results</Message>
<Message>multiple occurences: output</Message>
</Error>

Wenn ich aber die letzte der drei URLs, die mit den „Einträgen“, korrigiere (&type=phrase&region=de statt &type=phrase®ion=de) und im Browser abschicke, funktioniert's:

https://search.yahooapis.com/WebSearchS ... results=50

Michael1967
PostRank 9
PostRank 9
Beiträge: 2158
Registriert: 26.10.2005, 23:51

Beitrag von Michael1967 » 15.08.2008, 22:45

Das bedeutet jetzt?

Wie kommt das ®ion da rein? Und es darf nur mit einer Url abgefragt werden?

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 16.08.2008, 09:10

Michael1967 hat geschrieben:Wie kommt das ®ion da rein?
Das weiß ich nicht, es steht in deinem Beitrag.
Und es darf nur mit einer Url abgefragt werden?
Äh, dass https://blabla?faselhttps://blabla?fuse ... abla?fisel kaum eine brauchbare URL ist, um Abfragen nach fasel, fusel und fisel zu starten, sollte offensichtlich sein.

Michael1967
PostRank 9
PostRank 9
Beiträge: 2158
Registriert: 26.10.2005, 23:51

Beitrag von Michael1967 » 16.08.2008, 10:32

Mork vom Ork hat geschrieben:
Michael1967 hat geschrieben:Wie kommt das ®ion da rein?
Das weiß ich nicht, es steht in deinem Beitrag.
Und es darf nur mit einer Url abgefragt werden?
Äh, dass https://blabla?faselhttps://blabla?fuse ... abla?fisel kaum eine brauchbare URL ist, um Abfragen nach fasel, fusel und fisel zu starten, sollte offensichtlich sein.
Vielen Dank für deine Hilfe! :D

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag