你怎么做非www.链接包含www.在PHP?

0 php

我为数据库中列出的每部电影存储imdb.com链接,并在插入新电影之前检查重复项.问题是,有些链接是http://imdb.com/whatever,而其他链接是http:// www .imdb.com/whatever

什么是强制www的最佳方式.进入提交的每个链接?我知道我应该存储没有http://或http:// www的网址.这将一起缓解这个问题......但现在做出这个决定为时已晚.

Har*_*guy 7

为什么不只存储IMDB的电影ID而不是整个URL?如果您只存储ID,则可以以编程方式构建URL.

对于此URL的实例http://www.imdb.com/title/tt1049413/,您可以存储tt1049413.在我看来,这是一个更好的设计,因为如果IMDB改变了他们的URL格式,你可以改变构建url的应用程序部分,而不是用坏URL更改每一行.


raz*_*zed 5

使用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),因此在设计数据库时要注意.