Forum Webscript.Ru

Программирование => Perl => Тема начата: Stek от 14 Марта 2002, 14:39:50

Название: очистить от параметров
Отправлено: Stek от 14 Марта 2002, 14:39:50
Маленький и наверное весьма глупый вопрос :rolleyes:

Есть строка как http://www.server.com/url.php?id=20, т.е. строка с всевозможными параметрами. А ее надо превратить в просто строку http://www.server.com/url.php, в строку без параметров.

Как  это сделать на перле в наиболее быстром и компактном виде, особенно с учетом того что на обработку будет отданно несколько десятков тысяч строк.
Название: очистить от параметров
Отправлено: NeoNox от 14 Марта 2002, 14:47:51
Использовать mod_rewrite
http://www.engelschall.com/pw/apache/rewriteguide/
и
http://www.apache.org/docs/mod/mod_rewrite.html
Название: очистить от параметров
Отправлено: Stek от 14 Марта 2002, 14:53:28
А при чем тут вообще мод реврайт ? Я же указал, мне параметры надо отрезать, т.е. выкинуть к чертям. Это обработка лога, она вообще в кроне делается.
Название: очистить от параметров
Отправлено: NeoNox от 14 Марта 2002, 15:08:49
Цитировать
Это обработка лога, она вообще в кроне делается.

А я по твоему, телепат? Какой вопрос-такой ответ.

$url=~ s/\\?\\S+//i;
Название: очистить от параметров
Отправлено: Stek от 14 Марта 2002, 16:35:52
NeoNox
а я и спрашивал, как убрать параметр именно из строки. А за ответ отдельное спасибо :)
Название: очистить от параметров
Отправлено: NeoNox от 14 Марта 2002, 16:45:28
Цитировать
как убрать параметр именно из строки

Ну я так и понял. Только как адрессную... :)
Название: очистить от параметров
Отправлено: Stek от 29 Марта 2002, 21:57:24
Опять я, и снова по старому вопросу.
Вот код

$_s="http://www.ya.ru/yandsearch?text=%CD%E0%F3%F2%E8%EB%F3%F1 %CF%EE%EC%EF%E8%EB%F3%F1";
$_s=~ s/\\?\\S+//i;
print $_s."\\n";

$_s="http://www.ya.ru/yandsearch?text=vasia&id=12";
$_s=~ s/\\?\\S+//i;
print $_s."\\n";


В результате запуска получаем следующее:

[url]http://www.ya.ru/yandsearch[/url] %CF%EE%EC%EF%E8%EB%F3%F1
[url]http://www.ya.ru/yandsearch[/url]

Почему не корректно работает с первой строкой ?
Название: очистить от параметров
Отправлено: Chs от 29 Марта 2002, 22:08:00
Цитировать

Почему не корректно работает с первой строкой ?

Потому что в ней пробел есть, а в регулярном выражении написано \\S, что означает любой непробельный символ.
Название: очистить от параметров
Отправлено: Stek от 30 Марта 2002, 01:20:57
Тогда напрашивается вопрос - как быть ?
Название: очистить от параметров
Отправлено: Chs от 30 Марта 2002, 01:57:05
Цитировать
Тогда напрашивается вопрос - как быть ?

perldoc perlre :)
Учите регэкспы бо они рулез.:))
$_s=~ s/\\?.*//;
Название: очистить от параметров
Отправлено: Stek от 30 Марта 2002, 02:18:03
Спасибо.