|
|
|
|
|
для: sega_z
(21.05.2012 в 13:21)
| | parse_url($url, PHP_URL_PATH); - это для работы вы пишите или для отчетности?
<?
$path = explode('/',ltrim(parse_url($url, PHP_URL_PATH),'/'));
print_r($path);
|
| |
|
|
|
|
|
|
|
для: confirm
(21.05.2012 в 00:33)
| | Как тем же самым методом вытащить только название каталога "car" после домена:
<?
$url = 'http://www.domain.ru/car/automobil.php?page=2&marka=vaz&var1=33&var2=14';
parse_url($url, PHP_URL_PATH);
?>
|
так вытаскивает каталог вместе с страницей
Или можно только регуляркой вытащить?
preg_match_all("#([^:/?]+)#",$url,$match);
echo $match[0][1]."<br>"; // Корневой каталог
echo $match[0][2]."<br>"; // Каталог
echo $match[0][3]."<br>"; // Страница (без ?id=...)
|
| |
|
|
|
|
|
|
|
для: sega_z
(20.05.2012 в 22:44)
| | Когда же вы читать начнете.
<?
$url = 'http://www.domain.ru/car/automobil.php?page=2&marka=vaz&var1=33&var2=14';
$url = parse_url($url);
print_r($url);
?>
Array (
[scheme] => http
[host] => www.domain.ru
[path] => /car/automobil.php
[query] => page=2&marka=vaz&var1=33&var2=14 )
|
А значит, вам нужно только то, что содержат ключи "path" и "query" этого массива. Причем не обязательно, использовать array_diff_key($query, array('page'=>1)) в вашем случае, если вам нужно будет удалить только один ключ в массиве, достаточно будет unset($query['page']):
<?
parse_str($url['query'],$query);
unset($query['page']);
echo $url['path'].'?'.http_build_query($query);
| Если требуется удалить несколько ключей из множества, тогда и поможет array_diff_key(). | |
|
|
|
|
|
|
|
для: confirm
(18.05.2012 в 15:46)
| | Никак не могу понять, как изменить данный код, чтобы в итоге осталось: car/automobil.php?page=2&marka=vaz&var1=33&var2=14 (без http://, домена и слеша после домена )
$url = 'http://www.domain.ru/car/automobil.php?page=2&marka=vaz&var1=33&var2=14';
$url = parse_url($url);
parse_str($url['query'],$query);
$url = $url['scheme'].'://'.$url['host'].$url['path'].'?'.http_build_query(array_diff_key($query, array('page'=>1)));
echo $url;
|
| |
|
|
|
|
|
|
|
для: sega_z
(18.05.2012 в 15:36)
| | Вы прочтите о механизме разбора рег. выражениями.
Можно загрузить процессор длинной инструкцией, что вроде бы хорошо на первый взгляд, а можно заменить эту инструкцию большим числом инструкций, но коротких и не требующих сложной адресации. И второе будет выполнено быстрее, и это не парадокс. Именно эта концепция положена в архитектуру RISC процессоров, которые теперь являются неотъемлемой частью современных процессоров.
Ну а о том, что я написал нужно не додумываться, а чаще заглядывать в руководство РНР, в нем можно найти ответы на многие свои вопросы. Вы прочтите о тех функциях, которые я применил. | |
|
|
|
|
|
|
|
для: confirm
(18.05.2012 в 15:02)
| | Да действительно ловушка :) Я бы до этого не додумался. Я даже не понял логический смысл этого кода.
Т.е. Вы хотите сказать, что этот код намного легче и проще вышеуказанного с рег. выражениями? | |
|
|
|
|
|
|
|
для: sega_z
(18.05.2012 в 14:35)
| | А все, никак, ловушка. )
<?
$url = 'http://www.domain.ru/car/automobil_legkovaya.php?page=2&marka=vaz&var1=33&var2=14';
$url = parse_url($url);
parse_str($url['query'],$query);
$url = $url['scheme'].'://'.$url['host'].$url['path'].'?'.http_build_query(array_diff_key($query, array('page'=>1)));
echo $url;
|
| |
|
|
|
|
|
|
|
для: confirm
(18.05.2012 в 13:43)
| | Ну хорошо, вытащил я страницу с помощью parse_url и вытащил значение "page" с помощью parse_str:
$url = $_SERVER['HTTP_REFERER']; // получает URL, с которого пришёл посетитель
$url_host_stranica = parse_url($url, PHP_URL_QUERY); // вытаскиваем из URL все данные после ?
$url_host_stranica = parse_str($url_host_stranica);
|
И что дальше, как избавиться то от "page=..." в URL адресе? | |
|
|
|
|
|
|
|
для: sega_z
(18.05.2012 в 13:07)
| | Открываем руководство по РНР и читаем о функциях parse_url и parse_str, после чего выбрасываем preg_replace из данной задачи. Ну не место ей тут, если это можно сделать проще. | |
|
|
|
|
|
|
|
для: confirm
(18.05.2012 в 13:05)
| | Предыдущую ошибку нашел, но в результате остается знак "&": http://www.....ru/car/automobil_legkovaya.php?&marka=vaz
$url = $_SERVER['HTTP_REFERER']; // получает URL, с которого пришёл посетитель
preg_match_all("#(http)?([^:/]+)#",$url,$match);
$url_host = $match[0][1]; // Корневой каталог
$url_host_katalog = $match[0][2]; // Каталог
$url_host_stranica = $match[0][3]; // Страница (c ?razd=...)
$url_host_stranica = preg_replace("/&?page=[0-9]+/i","",$url_host_stranica);
|
Не знаю,как его убрать? | |
|
|
|
|