Подскажите по вырезанию из строки.

12
chemax
На сайте с 07.01.2009
Offline
206
812

Добрый вечер, господа:)

Есть строка:

http://site.com/?a=[набор буков и цифр]

либо строка

http://site.com/?a=[набор буков и цифр]&b=....

либо строка

http://site.com/?b=...&a=[набор буков и цифр]

либо строка

http://site.com/?b=...&a=[набор буков и цифр]&c=....

нужно вырезать [набор буков и цифр].:gm:

Качественный хостинг, VPS и сервера. (http://ihc.ru/?ref=569)
Robin_Bad
На сайте с 24.12.2007
Offline
85
#1

chemax, вырезать или выбрать? язык программирования-то какой, Fortran, Lisp, а может PHP? :)

chemax
На сайте с 07.01.2009
Offline
206
#2
Robin_Bad:
chemax, вырезать или выбрать? язык программирования-то какой, Fortran, Lisp, а может PHP? :)

тток проснулся, извиняюсь затупил) php ) ну как бэ присвоить переменной это значение)

AlikZP
На сайте с 22.11.2009
Offline
107
#3

Наверное регуляркой проще, но я в них не силен, поэтому другой способ:

Получаем все, что после знака вопроса:

$request = $_SERVER['REQUEST_URI'];

Делим на отдельные части, разделенные знаком &

$r = explode('&', $request);

Теперь эти части делим по знаку равенства ( = )

foreach ($r as $value) {

$temp = explode('=', $value);
echo $temp[0].' '.$temp[1]
}

Вместо эхи что-то свое впишите.

То есть мы получим для каждой пары:

temp[0] = 'a';

temp[1] = 'Значение a';

temp[0] = 'b';

temp[1] = 'Значение b';

и так далее. Как-то так :)

Можно еще включить RegisterGlobals, тогда GET-массив будет попадать в соответствующие переменные.

Но не уверен и говорят, что RegisterGlobals - большая дыра.

Website CMS: быстрая, удобная, недорогая! Вечная лицензия за 45$ (/ru/forum/524503) Яся - быстрый поиск фото для товаров. OpenCart/ocStore. Дополнение. (/ru/forum/665287) Грамотная верстка ваших макетов (/ru/forum/comment/8853216)
Robin_Bad
На сайте с 24.12.2007
Offline
85
#4

$str = 'http://site.com/?d=erfrfr&a=sd76f57645sd4&f=ewfdsdf345&c=wedwewef';

preg_match('/site.com\/\?.*?a=([0-9a-z]+)/', $str, $matches);

$a = $matches[1];

var_dump($a);

chemax
На сайте с 07.01.2009
Offline
206
#5
AlikZP:
Наверное регуляркой проще, но я в них не силен, поэтому другой способ:
Получаем все, что после знака вопроса:
$request = $_SERVER['REQUEST_URI'];

Делим на отдельные части, разделенные знаком &
$r = explode('&', $request);

Теперь эти части делим по знаку равенства ( = )
foreach ($r as $value) {
$temp = explode('=', $value);
echo $temp[0].' '.$temp[1]
}


Вместо эхи что-то свое впишите. Как-то так :)

спасиб))))

Robin_Bad:
$str = 'http://site.com/?d=erfrfr&a=sd76f57645sd4&f=ewfdsdf345&c=wedwewef';
preg_match('/site.com\/\?.*?a=([0-9a-z]+)/', $str, $matches);
$a = $matches[1];
var_dump($a);

и вам спасибо)

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#6
AlikZP:
Наверное регуляркой проще, но я в них не силен, поэтому другой способ:
Получаем все, что после знака вопроса:
PHP код:
$request = $_SERVER['REQUEST_URI'];
Делим на отдельные части, разделенные знаком &
PHP код:
$r = explode('&', $request);
Теперь эти части делим по знаку равенства ( = )
PHP код:
foreach ($r as $value) {
$temp = explode('=', $value);
echo $temp[0].' '.$temp[1]
}
Robin_Bad:
$str = 'http://site.com/?d=erfrfr&a=sd76f57645sd4&f=ewfdsdf345&c=wedwewef';
preg_match('/site.com\/\?.*?a=([0-9a-z]+)/', $str, $matches);
$a = $matches[1];
var_dump($a);

Ну вы, блин, даете. Переменная лежит в $_GET["a"]

Robin_Bad
На сайте с 24.12.2007
Offline
85
#7

Ёхан Палыч, вы невнимательно читаете задачу. Там речь идёт о некоей абстрактной строке. Если я на заборе напишу http://site.ru/?a=asdsad то оно тоже магическим образом в $_GET попадёт? :)

chemax
На сайте с 07.01.2009
Offline
206
#8
Ёхан Палыч:
Ну вы, блин, даете. Переменная лежит в $_GET["a"]

не-не) не на столько же я дурак) ссылка представляет собой текст, который надо разобрать)

chemax добавил 21.09.2010 в 15:26

Robin_Bad:
$str = 'http://site.com/?d=erfrfr&a=sd76f57645sd4&f=ewfdsdf345&c=wedwewef';
preg_match('/site.com\/\?.*?a=([0-9a-z]+)/', $str, $matches);
$a = $matches[1];
var_dump($a);

http://site.com/?a=[набор буков и цифр]

не обрабатывает)

и зачем var_dump($a); ???

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#9

Возможно я и невнимателен.

Для работы с урлами есть parse_url и parse_str и выдумывать велосипед здесь необязательно.

<?php

$str = 'http://site.com/?d=erfrfr&a=sd76f57645sd4&f=ewfdsdf345&c=wedwewef';
$url=parse_url($str);
parse_str($url["query"], $output);
print_r($output);
?>
Robin_Bad
На сайте с 24.12.2007
Offline
85
#10

chemax,

$str = 'http://site.com/?a=sd76f57645sd4';

preg_match('/site.com\/\?.*?a=([0-9a-z]+)/', $str, $matches);

$a = $matches[1];

у меня всё отрабатывает. вероятно, у вас в наборе букв и цифр есть и русские буквы? тогда более бронебойный вариант:

preg_match('/site.com\/\?.*?a=([0-9a-zа-я]+)/i', $str, $matches); :)

var_dump() я добавил для вывода результата на экран, чтобы видно было

Ёхан Палыч, согласен, что ваш вариант подходит не хуже. Вот только не согласен, что регулярные выражения для разбора строк - велосипед :)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий