Forum Webscript.Ru
Программирование => PHP => Тема начата: Орлис от 16 Апреля 2004, 11:45:45
-
При разработке в движка сайта возникла типичная прикладная задача:
1) на странице существуют абсолютные гиперссылки (например "/catalog/yarn/1036"),
2) есть переменная $url (например "/catalog/yarn"), которая содержит абсолютный адрес текущей страницы
3) нужно преобразовать гиперссылки их относительные ("../yarn/1036").
Сложность в том, что глубина вложенности ссылок \'../\' может быть от 0 (на корневой странице) до произвольной (например, перекрестные ссылки товаров из разных каталогов).
Разумно использовать для регулярные выражения, посоветуйте с чего начать.
-
Орлис:
Разумно использовать для регулярные выражения
не факт. имхо циклом заменять, разбив урл в массив
-
Орлис
не надо путать, абсолютная ссылка:
http://forums.webscript.ru/some_long_path/showthread.php
относительная:
/some_long_path/showthread.php
Относительные ссылки так и назваются, потому что выбирается место, ОТНОСИТЕЛЬНО которого будут писаться ссылки.
А теперь внятно и понятно распиши, какая стоит задача, потому что из того, что написано совсем непонятно, что надо сделать и по какому правилу!
-
Относительная ссылка относительна относительно адреса страницы, на которой находится относительная ссылка, а не от корня сайта. :)
Дано:
$page = адрес текущей страницы от корня сайта ("/catalog/yarn")
$href = адрес ссылки, относительно корня сайта ("/","/catalog/yarn/1036","/files/catalog/yarn.xls")
Нужно преобразовать $href в вид ("../..","yarn/1036","../../files/catalog/yarn.xls")
Это необходимо для того, чтобы удобно хранить идентификатор сессии в виде виртуального каталога www.company.com/56782347/catalog/yarn/1036
-
Орлис:
Относительная ссылка относительна относительно адреса страницы, на которой находится относительная ссылка, а не от корня сайта.
ну конечно я понимаю, что у тебя они относительно твоей страницы... не вопрос! да вот только исходная ссылка, как по мне, у тебя тоже не абсолютная...
а теперь по полочкам... может, я вообще съехал с ума, но я не понимаю, что ты пытаешься сделать :(
У тебя есть адрес страницы относительно корня сайта:
http://www.company.com/catalog/yarn/
тебе надо на этой странице разместить ссылку на
http://www.company.com/catalog/yarn/1036/
я не понимаю, причем виртуальный каталог к сессиям и к относительным данной страницы ссылкам?
[OFF]я уже решился перенести эту тему, но еще не решился куда, если ты изобретаешь велосипед, то поедем во флейм, если ты изобретаешь новый вид работы с сессиями, то тогда поедем к Ромику в РНР, а если вдруг тебе поможет mod_rewrite, я пока не могу это определить, то поедем в вебсервера.[/OFF]
-
хочу преобразовать строки вида "/catalog/yarn/1036" в, например, "../../catalog/yarn/1036", по определенным правилам
и изобретаю для этого регулярное выражение :D
сессии, mod_rewrite и флейм к этому имеют косвенное выражение
-
Орлис
ага, начинаем разбираться... т.е. есть какое-то правило, согласно которого у тебя перед адресом добавляется какое-то количество ../
Правильно?
-
Правильно. Только правило нужно еще придумать! :)
-
Орлис:
Правильно. Только правило нужно еще придумать
1. придумай правило,
2. почитай: [p]str_repeat[/p]
и поехали в PHP
-
если придумать правило, то реализовать его будет тривиально :D