Как вы делаете не WWW. ссылки содержат www. в php? - PullRequest
0 голосов
/ 08 июня 2009

Я сохраняю ссылки на imdb.com для каждого фильма, указанного в БД, и проверяю наличие дубликатов перед вставкой нового фильма. Проблема в том, что некоторые ссылки http://imdb.com/whatever, а другие http://www.imdb.com/whatever

Что было бы лучшим способом заставить www. в каждую ссылку, которая представлена? Я понимаю, что должен хранить URL-адрес без http: // или http://www., который бы все вместе решил эту проблему ... но уже слишком поздно принимать это решение

Ответы [ 5 ]

7 голосов
/ 08 июня 2009

Почему бы вам просто не сохранить идентификатор фильма IMDB, а не весь URL? Если вы просто сохраняете идентификатор, вы можете создать URL программным способом.

Для экземпляра для этого URL http://www.imdb.com/title/tt1049413/ вы можете просто сохранить tt1049413. По моему мнению, это лучший дизайн, потому что если IMDB когда-либо изменит свой формат URL, вы можете просто изменить часть своего приложения, которая создает URL, вместо того, чтобы менять каждую строку с неправильным URL.

5 голосов
/ 08 июня 2009

Используйте MySQL для исправления существующих:

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

Затем заранее используйте PHP для исправления входящих URL-адресов:

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

Но лучший способ - это сохранить идентификатор фильма imdb.com в своей базе данных:

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

Вместо этого сохраните "tt0088846" или, что еще лучше, 88846 в качестве первичного ключа и используйте константу:

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

Таким образом, намного быстрее и проще обнаруживать дубликаты. Обратите внимание, что IMDB имеет разные типы медиа (актеры и т. Д.), Которые используют другой префикс (nm для актеров и т. Д.), Поэтому имейте это в виду при проектировании базы данных.

0 голосов
/ 08 июня 2009

Ответить на ваш вопрос, заставив не-www. ссылки на отправку, по моему мнению, были бы лучшим вариантом, плюс я бы обновил базу данных, используя решение razzed.

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

Тем не менее, я бы сохранил только IMDB ID.

0 голосов
/ 08 июня 2009

Когда вы храните ссылку, вы не можете проверить, начинается ли она с http://imdb, и заменить ее на http://www.imdb?

0 голосов
/ 08 июня 2009

Вы можете использовать регулярное выражение для принудительного использования URL, но не все имена хостов начинаются с www.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...