0 php
我为数据库中列出的每部电影存储imdb.com链接,并在插入新电影之前检查重复项.问题是,有些链接是http://imdb.com/whatever,而其他链接是http:// www .imdb.com/whatever
什么是强制www的最佳方式.进入提交的每个链接?我知道我应该存储没有http://或http:// www的网址.这将一起缓解这个问题......但现在做出这个决定为时已晚.
为什么不只存储IMDB的电影ID而不是整个URL?如果您只存储ID,则可以以编程方式构建URL.
对于此URL的实例http://www.imdb.com/title/tt1049413/,您可以存储tt1049413.在我看来,这是一个更好的设计,因为如果IMDB改变了他们的URL格式,你可以改变构建url的应用程序部分,而不是用坏URL更改每一行.
使用MySQL修复现有的:
UPDATE table SET URL=REPLACE(URL,'http://imdb.com','http://www.imdb.com') WHERE URL LIKE 'http://imdb.com/%';
Run Code Online (Sandbox Code Playgroud)
然后使用PHP预先修复入站URL:
$url = str_replace('http://imdb.com','http://www.imdb.com',$url);
Run Code Online (Sandbox Code Playgroud)
但最好的方法是将imdb.com的电影ID存储在您的数据库中:
http://www.imdb.com/title/tt0088846/
Run Code Online (Sandbox Code Playgroud)
存储"tt0088846",甚至更好地存储88846作为主键,并使用常量:
$imdb_url = "http://www.imdb.com/title/tt{ID}/";
$url = str_replace("{ID}", $movie_id, $imdb_url);
Run Code Online (Sandbox Code Playgroud)
这样,检测重复项就会快得多,也更容易.请注意,IMDB具有不同的媒体类型(演员等),它们使用不同的前缀(演员等为nm),因此在设计数据库时要注意.