Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Преобразование адреса


Автор: xmrz 27.9.2005, 12:38
Помогите пожалуйста с такой вещью:

есть сайт http://www.site.ru

на его странице http://www.site.ru/cat/vers1/page15.html есть ссылка ../page16.html

как правильно отпарсить и преобразовать конечную ссылку в абсолютный адрес?

что делать в случае с вариантами

../../page16.html
./page16.html
page16.html

Кто сталкивался, отпишите пожалуйста

Автор: izOne 27.9.2005, 13:09
Код

<?php
$base = '/cat/vers1/page15.html';
$path = '.././page16.html';
echo cleanPath(dirname($base).'/'.$path);

function cleanPath($path) {
   $result = array();
   $pathA = explode('/', $path);
   if (!$pathA[0])
       $result[] = '';
   foreach ($pathA AS $key => $dir) {
       if ($dir == '..') {
           if (end($result) == '..') {
               $result[] = '..';
           } elseif (!array_pop($result)) {
               $result[] = '..';
           }
       } elseif ($dir && $dir != '.') {
           $result[] = $dir;
       }
   }
   if (!end($pathA))
       $result[] = '';
   return implode('/', $result);
}
?>


Бывает полезным (иногда) заглядывать на оффициальный сайт PHP (например, http://ua2.php.net/realpath) и читать комменты. smile

Автор: xmrz 27.9.2005, 14:13
Просто спаситель... smile

Огромный респект!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)