Forum Webscript.Ru

Программирование => PHP => Тема начата: Орлис от 16 Апреля 2004, 11:45:45

Название: преобразование абсолютных ссылок в относительные
Отправлено: Орлис от 16 Апреля 2004, 11:45:45
При разработке в движка сайта возникла типичная прикладная задача:
1) на странице существуют абсолютные гиперссылки (например "/catalog/yarn/1036"),
2) есть переменная $url (например "/catalog/yarn"), которая содержит абсолютный адрес текущей страницы
3) нужно преобразовать гиперссылки их относительные ("../yarn/1036").
Сложность в том, что глубина вложенности ссылок \'../\' может быть от 0 (на корневой странице) до произвольной (например, перекрестные ссылки товаров из разных каталогов).

Разумно использовать для регулярные выражения, посоветуйте с чего начать.
Название: преобразование абсолютных ссылок в относительные
Отправлено: AliMamed от 16 Апреля 2004, 12:12:44
Цитировать
Орлис:
Разумно использовать для регулярные выражения

не факт. имхо циклом заменять, разбив урл в массив
Название: преобразование абсолютных ссылок в относительные
Отправлено: Yukko от 17 Апреля 2004, 01:36:26
Орлис
не надо путать, абсолютная ссылка:
http://forums.webscript.ru/some_long_path/showthread.php
относительная:
/some_long_path/showthread.php

Относительные ссылки так и назваются, потому что выбирается место, ОТНОСИТЕЛЬНО которого будут писаться ссылки.
А теперь внятно и понятно распиши, какая стоит задача, потому что из того, что написано совсем непонятно, что надо сделать и по какому правилу!
Название: преобразование абсолютных ссылок в относительные
Отправлено: Орлис от 19 Апреля 2004, 16:18:34
Относительная ссылка относительна относительно адреса страницы, на которой находится относительная ссылка, а не от корня сайта. :)

Дано:
$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
Название: преобразование абсолютных ссылок в относительные
Отправлено: Yukko от 20 Апреля 2004, 00:41:57
Цитировать
Орлис:
Относительная ссылка относительна относительно адреса страницы, на которой находится относительная ссылка, а не от корня сайта.

ну конечно я понимаю, что у тебя они относительно твоей страницы... не вопрос! да вот только исходная ссылка, как по мне, у тебя тоже не абсолютная...
а теперь по полочкам... может, я вообще съехал с ума, но я не понимаю, что ты пытаешься сделать :(
У тебя есть адрес страницы относительно корня сайта:
http://www.company.com/catalog/yarn/
тебе надо на этой странице разместить ссылку на
http://www.company.com/catalog/yarn/1036/
я не понимаю, причем виртуальный каталог к сессиям и к относительным данной страницы ссылкам?

[OFF]я уже решился перенести эту тему, но еще не решился куда, если ты изобретаешь велосипед, то поедем во флейм, если ты изобретаешь новый вид работы с сессиями, то тогда поедем к Ромику в РНР, а если вдруг тебе поможет mod_rewrite, я пока не могу это определить, то поедем в вебсервера.[/OFF]
Название: преобразование абсолютных ссылок в относительные
Отправлено: Орлис от 20 Апреля 2004, 10:02:36
хочу преобразовать строки вида "/catalog/yarn/1036" в, например,  "../../catalog/yarn/1036", по определенным правилам

и изобретаю для этого регулярное выражение :D

сессии, mod_rewrite и флейм к этому имеют косвенное выражение
Название: преобразование абсолютных ссылок в относительные
Отправлено: Yukko от 20 Апреля 2004, 12:41:35
Орлис
ага, начинаем разбираться... т.е. есть какое-то правило, согласно которого у тебя перед адресом добавляется какое-то количество ../
Правильно?
Название: преобразование абсолютных ссылок в относительные
Отправлено: Орлис от 20 Апреля 2004, 16:48:34
Правильно. Только правило нужно еще придумать! :)
Название: преобразование абсолютных ссылок в относительные
Отправлено: Yukko от 21 Апреля 2004, 11:12:43
Цитировать
Орлис:
Правильно. Только правило нужно еще придумать

1. придумай правило,
2. почитай: [p]str_repeat[/p]

и поехали в PHP
Название: преобразование абсолютных ссылок в относительные
Отправлено: Орлис от 21 Апреля 2004, 11:28:51
если придумать правило, то реализовать его будет тривиально :D