Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: преобразование ссылок на странице, как браузер - при сохранении
 
 автор: naxa   (01.09.2009 в 18:47)   письмо автору
 
 

допустим есть страница где-то очень глубоко
http://site.com/dir/dir/dir/.../dir/index.php
и на ней есть ссылки вида:

href=kolya.php
href=../domen/index.php
href=/index.php

когда сохраняешь такую страницу в браузере - то ссылки преобразуются в
href=http://site.com/dir/dir/dir/.../dir/kolya.php
href=http://site.com/dir/dir/dir/.../domen/index.php
href=http://site.com/index.php

вопрос: как такое сделать с помощью регулярок и php ?

  Ответить  
 
 автор: heed   (01.09.2009 в 19:27)   письмо автору
 
   для: naxa   (01.09.2009 в 18:47)
 

preg_replace_callback() , с довольно-таки неслабой callback - функцией (возможно и с использованием других preg-функций внутри неё)

UPD//
необратил внимания на href=http://site.com/dir/dir/dir/.../dir/kolya.php :))
так даже просще

  Ответить  
 
 автор: naxa   (01.09.2009 в 23:13)   письмо автору
 
   для: heed   (01.09.2009 в 19:27)
 

помогите с регуляркой, которая вырезает часть ссылки и делает из:
http://site.ru/dirname/../page.php
вот это:
http://site.ru/page.php

т.е. как достать из урл вот этот участок кода "dirname/.." ?
можно в регулярке сделать, чтобы читало справа на лево от /.. до первой /

или как это делается?


ссылка работает и так и так, но 1-й вариант выглядит совсем не красиво.

  Ответить  
 
 автор: naxa   (01.09.2009 в 23:36)   письмо автору
 
   для: naxa   (01.09.2009 в 23:13)
 

$t = 'http://site.ru/dirname1/sdfh2343-gx7ab/../dirname3/page.php';
echo preg_replace("'\/[-a-z0-9_]+\/\.\.\/'i", '/', $t);

есть какой-нить более "научный" способ сделать то, что мне надо? :)))

  Ответить  
 
 автор: heed   (01.09.2009 в 23:46)   письмо автору
 
   для: naxa   (01.09.2009 в 23:13)
 

например
<pre><?
$txt 
'http://site.ru/dirname/../page.php';

preg_match('#(?<=/)[^/]+/\.\./#'$txt$o);
print_r($o);
# или лучше
preg_match('#/[^/]+/\.\.(?=/)#'$txt$o);
print_r($o);
?>


// "научный" способ это обработка результатов функции parse_url()

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования