An sich ist der Lösungsansatz ja nicht so verkehrt, das Prblem dürfte aber sein, dass der entsprechende Amazon Artikel gar nicht gefunden wird. (So verstehe ich zumindest das Ausgangsproblem). Und dazu würd ich einfach die Google API nutzen, da Google sehr schlaue logarithmen für genau dieses Problem im Einsatz hat und vermutlich niemand auch nur was ähnlich gutes selbst schreiben kann.
Der Code würde in etwa so aussehen:
Damit findest du bei Amazon das gewünschte sicher schon mal. Dann musst du nur noch den Amazon Titel auslesen<?php
$search = 'Russisches Mädchen, Thriller von B.C. Schiller';
$sites = 'amazon.de';
$url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=site:".$sites."%20".urlencode($search) ;
$body = file_get_contents($url);
$json = json_decode($body);
for($x=0;$x<count($json->responseData->results);$x++){
echo "<b>Result ".($x+1)."</b>";
echo "<br>URL: ";
echo $json->responseData->results[$x]->url;
echo "<br>Title: ";
echo $json->responseData->results[$x]->title;
echo "<br><br>";
}
?>
Danach nimmst du entweder similar_text() oder was ich besser finde in deinem Fall levenshtein() um den Titel mit deinem abzugleichen. levenshtein() gibt dir die Anzahl Zeichen die anders sind als Int zurück. Dann liest du noch die geammtlänge des Titels aus und kombinierst das ganze schlau, zB dass erst ab einer Länge von 5 ein Fehler auftreten darf und ab einer von 10, 2 Fehler oder irgend so was. Deine beiden Beispiele liefern zB beide eine 2 als Rückgabewert. Ach ja und wie bereits vorgeschlagen das ganze noch mit einem strtolower() verfeinern.
EDIT: Evt ist der Google Ansatz völlig unnötig, vermutlich machst du die Suche ja schon über die Amazon API und die ist kaum schlechter.




Zitieren