Как лучше сделать ссылки?

Unlock
На сайте с 01.08.2004
Offline
786
754

Ситуация. Есть информация в таком примерно виде:

Canadian Journal of Chemistry, 64, p. 246, 1986

Journal of the American Chemical Society, 75, p. 1314, 1953

Надо сделать ссылки, т.е.:

<a href="http://pubs.nrc-cnrc.gc.ca/rp-ps/volumes.jsp?jcode=cjc&lang=eng&exp=64#exp">Canadian Journal of Chemistry, 64, p. 246, 1986</a>

<a href="http://pubs3.acs.org/acs/journals/toc.page?incoden=jacsat&involume=75">Journal of the American Chemical Society, 75, p. 1314, 1953</a>
Такие два варианта мне представляются. Первый это просто сделать ссылки в самих файлах с данными, т.е. в базу уже грузить ссылки. Второй вариант, делать ссылки вида
<a href="http://www.site.com/script.php">Journal of the American Chemical Society, 75, p. 1314, 1953</a>
и чтобы уже сам сам скрипт, в зависимости от текста в анкоре, формировал адрес и отправлял посетителя куда надо.

Второй вариант бред или нет? Первый не нравится тем, что если поменяется что-то на сайтах с журналами, то придется все ссылки переделывать, вместо того, чтобы просто поменять алгоритм их формирования. Но первый очень легко реализовать, а второй не знаю как :(

Посоветуйте пожалуйста, может есть другой вариант :)

Есть желание, - тысяча способов; нет желания, - тысяча поводов! /Петр-I/.
Z-Den
На сайте с 30.06.2007
Offline
25
#1

На первый взгляд второй вариант невозможен.

Ну ничего попробуем найти выход)

PHP ну никак не определит по какому анкору кликнул пользователь, только если передавать его в параметрах урла:

<a href="http://site.ru/script.php?r=http://site2.com/">Bla-bla-bla</a>

Но это вашей проблеме не поможет, т.к. все равно придется указывать "свой" урл для каждого анкора, но зато ссылка будет не прямая))

Но если воспользоваться еще и Ява-скриптом, то уже можно что-то наколдовать, т.е. можно написать скрипт который после загрузки этих урлов в браузер будет подставлять необходимый урл в параметр.

Урл до обработки явой:

http://site.ru/script.php

и после:

http://site.ru/script.php?r=http://site2.com/

Тут находит главная проблема: Где брать эти урлы??? Как из этих анкоров

Canadian Journal of Chemistry, 64, p. 246, 1986

Journal of the American Chemical Society, 75, p. 1314, 1953

скрипт сделает соответсвенно такие урлы?:

http://pubs.nrc-cnrc.gc.ca/rp-ps/volumes.jsp?jcode=cjc&lang=eng&exp=64#exp

http://pubs3.acs.org/acs/journals/toc.page?incoden=jacsat&involume=75

А какой урл будет для такого анкора?:

Bla-bla-bla.

Нету связи между урлом и анкором. Вот если бы ссылки были нужны такого вида(урлы соответствуют анкорам)

<a href="http://site.ru/">site.ru</a>

тогда можно было бы что-то сделать.

Есть вариант передавать эти урлы в браузер в некой переменной Ява-скрипта:

<script>

var a1="http://site1.ru";
var a2="http://site2.ru";
</script>

Но если это можно сделать, то легче намного будет передать эти урлы в атрибуты href тэгов ссылок:

<a href="http://site1.ru/">Bla-bla-bla1</a>

<a href="http://site2.ru/">Bla-bla-bla2</a>

Вывод напрашивается сам собой:

Второй вариант вполне возможен, но он не имеет смысла, т.к. нужно будет все равно определять для ссылок разные урлы, а легче будет указать уже нормальные урлы и все. Для случая с явой, то сама ява должна где-то взять эти урлы, и указывать их все равно где-то придется, так легче их указать в самих ссылках и все.

Блин, вот это я загнул))

Unlock
На сайте с 01.08.2004
Offline
786
#2

Я к сожалению совсем не знаком с PHP, но неужели невозможно сделать соответствие названия журнала и урла? Т.е. если анкор содержит Canadian Journal of Chemistry то урл надо формировать из такой ссылки http://pubs.nrc-cnrc.gc.ca/rp-ps/volumes.jsp?jcode=cjc&lang=eng&exp=номер-тома#exp Если анкор содержит другое название, то ему тоже урл другой будет соответствовать... И т.д. А уж брать номер тома из анкора, точно не проблема, даже для меня :) Тут простая регулярка будет работать. Что-то мне кажется что может быть простое решение. Все было бы просто если был бы только один журнал, тогда preg replace и никаких проблем. Неужели задача не имеет простого решения? :) Не хочется делать криво и задавать ссылки изначально.

y4an
На сайте с 21.07.2004
Offline
47
#3

как вариант, передавать на внутренний скрипт текст в качестве параметра, а там парсить и делать редирект на сформированную ссылку, т.е. сама ссылка будет вида:

<a href="http://www.site.com/script.php?get=Journal of the American Chemical Society, 75, p. 1314, 1953">Journal of the American Chemical Society, 75, p. 1314, 1953</a>

внутри скрипта разбор get, по заранее определенным регуляркам, и переход по полученной ссылке

E
На сайте с 05.01.2004
Offline
123
#4
Unlock:
Я к сожалению совсем не знаком с PHP, но неужели невозможно сделать соответствие названия журнала и урла?

$url=urlencode("Canadian Journal of Chemistry, 64, p. 246, 1986");

echo"http://www.yousite.ru/$url";

Результат:

http://www.yousite.ru/Canadian+Journal+of+Chemistry%2C+64%2C+p.+246%2C+1986

достигается функцией urlencode в php

соответственно обратно функцией urldecode.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий