2009-06-08 21 views
0

Ich speichere imdb.com-Links für jeden Film, der in der DB aufgelistet ist, und überprüfe, ob Duplikate vorhanden sind, bevor ein neuer Film eingefügt wird. Das Problem ist, einige Links http://imdb.com/whatever sind, während andere sind http: // www .imdb.com/was auch immerWie machen Sie nicht www. Links enthalten www. in PHP?

was der beste Weg www zwingen würden. in jeden Link, der eingereicht wurde? Mir ist klar, dass ich die URL ohne http: // oder http://www speichern sollte. was dieses Problem alle zusammen lindern würde .... aber es ist zu spät, um diese Entscheidung jetzt zu treffen.

Antwort

7

Warum speichern Sie nicht einfach die Film-ID des IMDB, statt die gesamte URL? Wenn Sie nur die ID speichern, können Sie die URL programmgesteuert erstellen.

Zum Beispiel für diese URL http://www.imdb.com/title/tt1049413/ können Sie einfach tt1049413 speichern. Dies ist meiner Meinung nach ein besseres Design, denn wenn IMDB jemals ihr URL-Format ändert, können Sie nur den Teil Ihrer App ändern, der die URL erstellt, anstatt jede Zeile mit einer schlechten URL zu ändern.

-1

Sie könnten reguläre Ausdrücke verwenden, um die URL zu erzwingen, aber nicht alle Hostnamen beginnen mit www.

0

Wie können Sie bei der Speicherung der Verbindung prüfen, ob sie mit http://imdb beginnt und diese durch http://www.imdb ersetzen?

5

Verwenden MySQL die bestehenden zu beheben:

UPDATE table SET URL=REPLACE(URL,'http://imdb.com','http://www.imdb.com') WHERE URL LIKE 'http://imdb.com/%'; 

Dann PHP vorher eingehende URLs zu beheben verwenden:

$url = str_replace('http://imdb.com','http://www.imdb.com',$url); 

Aber die beste Methode ist imdb.com der Film-ID in der Datenbank zu speichern statt:

http://www.imdb.com/title/tt0088846/ 

Store "tt0088846" statt, oder noch besser, 88846 als Primärschlüssel, und ac verwenden onstant:

$imdb_url = "http://www.imdb.com/title/tt{ID}/"; 
$url = str_replace("{ID}", $movie_id, $imdb_url); 

So ist es viel schneller und einfacher Dubletten zu erkennen. Beachten Sie, dass IMDB über verschiedene Medientypen (Aktoren usw.) verfügt, die ein anderes Präfix (nm für Akteure usw.) verwenden. Beachten Sie also beim Entwerfen Ihrer Datenbank.

0

Um Ihre Frage zu beantworten, zwingt nicht www. Links bei der Einreichung wäre meiner Meinung nach eine bessere Option, und ich würde die Datenbank mit Razzeds Lösung aktualisieren.

$url = str_replace('http://www.', 'htp://', $url); 

Noch würde ich nur die IMDB ID speichern.

Verwandte Themen