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

Форум PHP

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

 

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

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

тема: Разбор URL
 
 автор: lelick   (17.09.2007 в 22:40)   письмо автору
 
 

Здравствуйте уважаемые форумчане и форумчанки) помогите с вопросиком!

Как из этой строки

var1=value1&var2=value2&var3=value3

получить value1? строка может иметь вид var1=value1 или var1=value1& и т.д
можно ли сделать это без использования функции parse_url

   
 
 автор: Trianon   (17.09.2007 в 22:48)   письмо автору
 
   для: lelick   (17.09.2007 в 22:40)
 

parse_url здесь не поможет. Она сама выдаст такую строку.


$arr= explode('&', $str);
foreach($arr as $piece)
{
    $piece = explode('=', $piece, 2);
    if($piece[0] == 'var1')
    {
        $res = rawurldecode($piece[1]);
        echo htmlspecialchars($res);
    }
}

   
 
 автор: lelick   (17.09.2007 в 22:55)   письмо автору
 
   для: Trianon   (17.09.2007 в 22:48)
 

дело в том что этого '&' символа там может и не быть
спасибо уже сделал с помощью регулярных выражений!

   
 
 автор: Trianon   (17.09.2007 в 23:07)   письмо автору
 
   для: lelick   (17.09.2007 в 22:55)
 

>дело в том что этого '&' символа там может и не быть

Конечно. Если параметр всего один, или вообще отсутствует. .

>спасибо уже сделал с помощью регулярных выражений!

Очень сомневаюсь, что результат правильный.

   
 
 автор: ProtoTeeP   (18.09.2007 в 01:38)   письмо автору
 
   для: Trianon   (17.09.2007 в 23:07)
 

Я бы так поступил:


<?
//
parse_str('var1=value1&var2=value2&var3=value3');
echo 
$var1;
//
?>


=)

   
 
 автор: Trianon   (18.09.2007 в 10:10)   письмо автору
 
   для: ProtoTeeP   (18.09.2007 в 01:38)
 

и потеряли бы контроль над текущим контекстом.

тогда уж parse_str("....", $res);

   
 
 автор: ProtoTeeP   (18.09.2007 в 10:31)   письмо автору
 
   для: Trianon   (18.09.2007 в 10:10)
 

>и потеряли бы контроль над текущим контекстом.
--- как это понять?
если я не ошибаюсь, все переменные примут свое значение.,
да и задача стояла только одну перменную показать... =)
>
>тогда уж parse_str("....", $res);

   
 
 автор: lelick   (19.09.2007 в 08:34)   письмо автору
 
   для: Trianon   (17.09.2007 в 23:07)
 

>Очень сомневаюсь, что результат правильный.
если я уточнил бы вопрос вы бы не сомневались ;) /*надо учится задавать вопросы*/

$query = parse_url($_SERVER['HTTP_REFERER']);
preg_match('#^var1=([0-9]+)#', $query['query'], $matches);
print $matches[1]

   
 
 автор: ProtoTeeP   (18.09.2007 в 10:37)   письмо автору
 
   для: lelick   (17.09.2007 в 22:40)
 

у меня тоже вопрос по этой теме, раз тема подобная есть, не буду новую создавать...

делаю граббер, и обнаружил, что

$_SERVER['QUERY_STRING'] - не читает после #

и как бы я не пытался вставить # , парсировать подобные страницы у меня не получается....
# - здесь идет не как якорь, а как разделитель.

т.е. после него идет какое -то значение...
и видать стоит проверка на наличие проверочного слова...

можно ли с этим бороться?

   
 
 автор: Unkind   (18.09.2007 в 10:46)   письмо автору
 
   для: ProtoTeeP   (18.09.2007 в 10:37)
 

Надо URL-кодировать "#".

   
 
 автор: ProtoTeeP   (18.09.2007 в 10:50)   письмо автору
 
   для: Unkind   (18.09.2007 в 10:46)
 

я пытался... эфекта 0...

даже вручную переводил
# -> %23

   
 
 автор: neudor   (18.09.2007 в 11:50)   письмо автору
 
   для: ProtoTeeP   (18.09.2007 в 10:50)
 

используйте другой символ =)

   
 
 автор: ProtoTeeP   (18.09.2007 в 17:14)   письмо автору
 
   для: neudor   (18.09.2007 в 11:50)
 

какой?

   
 
 автор: Gemorroj   (18.09.2007 в 19:03)   письмо автору
 
   для: ProtoTeeP   (18.09.2007 в 17:14)
 

Какой-нибудь редко используемый в URI, например |

   
 
 автор: ProtoTeeP   (18.09.2007 в 19:20)   письмо автору
 
   для: Gemorroj   (18.09.2007 в 19:03)
 

нет. Вы меня не поняли, я делаю граб.
т.е. сделал. он граббит, но не все страницы.
он не хочет переходить на страницы URL которого содержит #

например, http://site.ru/index.php?id=5#video

он граббит http://site.ru/index.php?id=5,
т.е. вырезает #video , а на той странице видать стоит проверка на наличеие #video

   
 
 автор: Unkind   (18.09.2007 в 19:23)   письмо автору
 
   для: ProtoTeeP   (18.09.2007 в 19:20)
 

Это никакой не разделитель. На сервер это не отправляется.
"#video" нужно исключительно для Вашего браузера.

   
 
 автор: sim5   (19.09.2007 в 10:02)   письмо автору
 
   для: ProtoTeeP   (18.09.2007 в 19:20)
 

>http://site.ru/index.php?id=5#video

#video - это действительно не якорь и тем более не разделитель, а анкер на странице, являющийся ссылкой на месте в странице, а именно: <a name="video"></a>. При наличие этого анкера, браузер сделает прокрутку документа (если потребуется), установив участок документа с этим именем первой строкой.

   
 
 автор: kasmanaft   (19.09.2007 в 12:50)   письмо автору
 
   для: sim5   (19.09.2007 в 10:02)
 

Ну вроде бы он зовется якорем, а анкер это просто элемент А (любой, в смысле. с href и без него).
Точно не помню, но вроде так..

   
 
 автор: RV   (20.09.2007 в 05:50)   письмо автору
 
   для: kasmanaft   (19.09.2007 в 12:50)
 

анкер и якорь это одно и тоже на разных языках

   
 
 автор: ProtoTeeP   (19.09.2007 в 23:12)   письмо автору
 
   для: sim5   (19.09.2007 в 10:02)
 

а разве в wml - разметке есть подобная функция?

   
 
 автор: Unkind   (19.09.2007 в 23:18)   письмо автору
 
   для: ProtoTeeP   (19.09.2007 в 23:12)
 

В WML это имя карты.

   
Rambler's Top100
вверх

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