|
|
|
| допустим есть страница где-то очень глубоко
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 ? | |
|
|
|
|
|
|
|
для: naxa
(01.09.2009 в 18:47)
| | preg_replace_callback() , с довольно-таки неслабой callback - функцией (возможно и с использованием других preg-функций внутри неё)
UPD//
необратил внимания на href=http://site.com/dir/dir/dir/.../dir/kolya.php :))
так даже просще | |
|
|
|
|
|
|
|
для: heed
(01.09.2009 в 19:27)
| | помогите с регуляркой, которая вырезает часть ссылки и делает из:
http://site.ru/dirname/../page.php
вот это:
http://site.ru/page.php
т.е. как достать из урл вот этот участок кода "dirname/.." ?
можно в регулярке сделать, чтобы читало справа на лево от /.. до первой /
или как это делается?
ссылка работает и так и так, но 1-й вариант выглядит совсем не красиво. | |
|
|
|
|
|
|
|
для: naxa
(01.09.2009 в 23:13)
| | $t = 'http://site.ru/dirname1/sdfh2343-gx7ab/../dirname3/page.php';
echo preg_replace("'\/[-a-z0-9_]+\/\.\.\/'i", '/', $t);
есть какой-нить более "научный" способ сделать то, что мне надо? :))) | |
|
|
|
|
|
|
|
для: 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() | |
|
|
|