Seite 1 von 1
Yahoo Api Problem
Verfasst: 14.08.2008, 15:06
von Michael1967
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?
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
Verfasst: 15.08.2008, 01:43
von Burns
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);
Verfasst: 15.08.2008, 09:15
von Michael1967
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.
Verfasst: 15.08.2008, 12:21
von Burns
ich hab's und bei mir funst es nun endlich
Code: Alles auswählen
$array_1 = array("ä","ü","ö","Ä","Ü","Ö","ß","'","< ",">",'"',"§","€","²","³");
$array_2 = array("ä","ü","ö","Ä","Ü","Ö","ß","'","<",">",""","§","EUR","²","³");
$string = str_replace($array_1,$array_2,$string);
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
Verfasst: 15.08.2008, 13:27
von Michael1967
Und an welcher Stelle/Variable hast du das jetzt eingebaut?
Ich verstehe den Sinn deiner Funktion auch nicht. Wie soll damit eine Umwandlung stattfinden?
Verfasst: 15.08.2008, 15:06
von Burns
Code: Alles auswählen
$request='http://search.yahooapis.com/WebSearchService/V1/webSearch?appid='.$application_ID.'&query='.urlencode($text_selection).'&output=php&adult_ok=1&type=phrase®ion='.$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
Re: Yahoo Api Problem
Verfasst: 15.08.2008, 15:12
von Mork vom Ork
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://search.yahooapis.com/WebSearchService/V1/webSearch?appid='.$application_ID.'&query='.urlencode(utf8_encode($text_selection)).'&output=php&adult_ok=1&type=phrase®ion='.$country.'&results='.$number_of_res;
Mit iconv() und windows-1252:
Code: Alles auswählen
$request='http://search.yahooapis.com/WebSearchService/V1/webSearch?appid='.$application_ID.'&query='.urlencode(iconv("WINDOWS-1252", "UTF-8", $text_selection)).'&output=php&adult_ok=1&type=phrase®ion='.$country.'&results='.$number_of_res;
Verfasst: 15.08.2008, 16:57
von Burns
Ahhh, super
das funktioniert sehr gut und macht meine Umwandlung der Umlaute unnötig.
THX Mork, nano nano

Verfasst: 15.08.2008, 18:57
von Michael1967
Das funktioniert bei mir auch nach dem Tauschen der Zeile nicht.
Muss ich da noch was beachten?
Verfasst: 15.08.2008, 22:05
von Mork vom Ork
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?
Verfasst: 15.08.2008, 22:13
von Michael1967
Den zweiten Code habe ich eingebaut.
Ausgabe -
Code: Alles auswählen
http://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://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://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://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://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://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://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://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
Verfasst: 15.08.2008, 22:35
von Mork vom Ork
Michael1967 hat geschrieben:Code: Alles auswählen
http://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://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://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®ion=de statt &type=phrase®ion=de) und im Browser abschicke, funktioniert's:
https://search.yahooapis.com/WebSearchS ... results=50
Verfasst: 15.08.2008, 22:45
von Michael1967
Das bedeutet jetzt?
Wie kommt das ®ion da rein? Und es darf nur mit einer Url abgefragt werden?
Verfasst: 16.08.2008, 09:10
von Mork vom Ork
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.
Verfasst: 16.08.2008, 10:32
von Michael1967
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!
