В чем сила, БРАТ?
С нами с 22.03.05
Сообщения: 749
Рейтинг: 246
|
Добавлено: 09/02/11 в 19:39 |
|
|
|
|
С нами с 22.08.05
Сообщения: 530
Рейтинг: 801
|
Добавлено: 09/02/11 в 19:50 |
если цифр нигде больше нет то
^.+([0-9]+).+$
|
|
|
|
В чем сила, БРАТ?
С нами с 22.03.05
Сообщения: 749
Рейтинг: 246
|
Добавлено: 09/02/11 в 20:02 |
нет не то... и цифры и буквы. такое решение придумал, обрезать с одного края до скобки, и с другого. сейчас попробую.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 09/02/11 в 20:11 |
проще через
parse_url + explode('&', $url);
|
|
|
|
В чем сила, БРАТ?
С нами с 22.03.05
Сообщения: 749
Рейтинг: 246
|
Добавлено: 09/02/11 в 20:18 |
нет тоже не то, нашел простое решение
$itog = substr($url,strrpos($sablon,"{"),-(strlen($sablon)-strrpos($sablon,"}")));
|
|
|
|
С нами с 05.04.07
Сообщения: 1661
Рейтинг: 1090
|
Добавлено: 09/02/11 в 20:29 |
ну на питоне как то так можно сделать
result=url[url.find('=')+1:url.rfind('&')]
|
|
|
|
.:GLX Group:.
С нами с 17.05.07
Сообщения: 693
Рейтинг: 752
|
Добавлено: 09/02/11 в 20:32 |
фига се простое
|
|
|
|
С нами с 09.10.07
Сообщения: 433
Рейтинг: 321
|
Добавлено: 09/02/11 в 22:05 |
taj писал: | ну на питоне как то так можно сделать
result=url[url.find('=')+1:url.rfind('&')] |
на питоне это делается както так
Код: |
>>> import urlparse
>>> url="http://example.com/?param=42&blabla=preved"
>>> urlparse.parse_qs(urlparse.urlparse(url).query).get('param', ["default_value"])[0]
'42'
|
|
|
|
|
С нами с 05.04.07
Сообщения: 1661
Рейтинг: 1090
|
Добавлено: 09/02/11 в 22:24 |
И ещё 3мя десятками способов
Тащить целый пакерт чтобы разобрать конкретный пример? просто не мой метод
Peace)
|
|
|
|
В чем сила, БРАТ?
С нами с 22.03.05
Сообщения: 749
Рейтинг: 246
|
Добавлено: 09/02/11 в 22:47 |
|
|
|
|
С нами с 20.02.06
Сообщения: 248
Рейтинг: 366
|
Добавлено: 10/02/11 в 02:32 |
Цитата: | Вопрос, как можно бысто и просто вытащить {key} тоесть чтоб получить 1111111 |
Нихрена не понятно. Откуда надо вытащить - из шаблона {key} или из готового урла параметр?
|
|
|
|
С нами с 07.10.01
Сообщения: 4835
Рейтинг: 3672
|
Добавлено: 10/02/11 в 02:45 |
Да уж, задание сформулировано красиво
Ничего не понять.
|
|
|
|
php
С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410
|
Добавлено: 10/02/11 в 08:26 |
ну если из выше показаного примера вытащит единицы то можно например и так
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 10/02/11 в 11:05 |
уточни условие, кей появляется самым первым, после домена?
|
|
|
|
С нами с 05.04.07
Сообщения: 1661
Рейтинг: 1090
|
Добавлено: 10/02/11 в 11:21 |
kodek писал: | Да уж, задание сформулировано красиво
Ничего не понять. |
Вот с такими заказчиками и приходиться часто иметь дело.
Какой пример показал, для такого и подсказали. Телепатов как выяснилось тут нет )
По сабжу:
Пропускаешь урл через фильтр предложенный мной, он отсеит первые 2 варианта, потом проверка на 3 вариант, и потом уже на 4ой. Как то так, например:
Код: [развернуть] | result=None
pos=0
result=url[url.find('=')+1:url.rfind('&')]
if result is None:
pos=url.find('=')
if pos>0:
result=url[pos+1:]
if result is None:
result=url[url.find('?')+1:] |
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 10/02/11 в 11:39 |
че то не посмотрел, на аком яп надо было, но регу одельно вынес
Код: |
//---------------------регулярное выражение
$regex = '%\?([\w\d]+)(?(?=\=)\=([\w\d]+))%is';
$regex2 = '%\?([\w\d]+)(?(?=\=)\=([\w\d]+))%i';
//---------------------
//---------------------пример 1й
$str = 'http://domen.com/?dd=WW1&ff=ee
http://domen.com/?iii=WW2&ff=ee
http://domen.com/?aaaaWW3ggsa&dsa=1
http://domen.com/?WW4';
preg_match_all( $regex, $str, $match, PREG_SET_ORDER );
$keyArray = array();
foreach ( $match as $set ) {
$keyArray[] = ( isset($set[2]) ? $set[2] : $set[1] );
}
echo '<pre>';
print_r( $keyArray );
//---------------------
//---------------------пример 2й
$str = 'https://www.master-x.com/?blamykey';
preg_match( $regex, $str, $match );
$key = ( isset($match[2]) ? $match[2] : $match[1] );
echo '<pre>';
print_r( $key );
//---------------------
//---------------------пример 3й
$str = 'https://www.master-x.com/?blavar=heremykey&other=blavars&etc';
preg_match( $regex2, $str, $match );
$key = ( isset($match[2]) ? $match[2] : $match[1] );
echo '<pre>';
print_r( $key );
//---------------------
|
получается, если захвачена 2я подмаска, то значит она, иначе это 1я
|
|
|
|
В чем сила, БРАТ?
С нами с 22.03.05
Сообщения: 749
Рейтинг: 246
|
Добавлено: 10/02/11 в 13:32 |
_s_[sov] писал: | ну если из выше показаного примера вытащит единицы то можно например и так |
это не сработает, нужна таблкетка от жадности
[/quote]
|
|
|
|
В чем сила, БРАТ?
С нами с 22.03.05
Сообщения: 749
Рейтинг: 246
|
Добавлено: 10/02/11 в 13:38 |
CABMIT писал: | Нихрена не понятно. Откуда надо вытащить - из шаблона {key} или из готового урла параметр? |
нужно из УРЛ по шаблону выташить - строку. тесть все то что в {key}. надо наложить - отсечь лишнее из урл, оставить только подходит под кей. незнаю как еще объяснить
|
|
|
|
С нами с 20.02.06
Сообщения: 248
Рейтинг: 366
|
Добавлено: 10/02/11 в 13:38 |
ТС, ты можешь чётко и ясно сформулировать задачу? Что есть на входе и что должно получиться на выходе? Чётко сформулированная задача - это уже половина решения. Я уверен, что задача тут на 10 секунд, но просто люди не могут понять что ты хочешь
|
|
|
|
В чем сила, БРАТ?
С нами с 22.03.05
Сообщения: 749
Рейтинг: 246
|
Добавлено: 10/02/11 в 13:40 |
freeek писал: | че то не посмотрел, на аком яп надо было, но регу одельно вынес
Код: |
//---------------------регулярное выражение
$regex = '%\?([\w\d]+)(?(?=\=)\=([\w\d]+))%is';
$regex2 = '%\?([\w\d]+)(?(?=\=)\=([\w\d]+))%i';
//---------------------
//---------------------пример 1й
$str = 'http://domen.com/?dd=WW1&ff=ee
http://domen.com/?iii=WW2&ff=ee
http://domen.com/?aaaaWW3ggsa&dsa=1
http://domen.com/?WW4';
preg_match_all( $regex, $str, $match, PREG_SET_ORDER );
$keyArray = array();
foreach ( $match as $set ) {
$keyArray[] = ( isset($set[2]) ? $set[2] : $set[1] );
}
echo '<pre>';
print_r( $keyArray );
//---------------------
//---------------------пример 2й
$str = 'https://www.master-x.com/?blamykey';
preg_match( $regex, $str, $match );
$key = ( isset($match[2]) ? $match[2] : $match[1] );
echo '<pre>';
print_r( $key );
//---------------------
//---------------------пример 3й
$str = 'https://www.master-x.com/?blavar=heremykey&other=blavars&etc';
preg_match( $regex2, $str, $match );
$key = ( isset($match[2]) ? $match[2] : $match[1] );
echo '<pre>';
print_r( $key );
//---------------------
|
получается, если захвачена 2я подмаска, то значит она, иначе это 1я |
это слишком сложно, я же писал, вот такое решение придумал 2 строчки
Код: |
if(!$end = strrpos($sablon,"}")+1-strlen($sablon))$end = strlen($url);
$itog = substr($url,strrpos($lin,"{")),$end) |
|
|
|
|
В чем сила, БРАТ?
С нами с 22.03.05
Сообщения: 749
Рейтинг: 246
|
Добавлено: 10/02/11 в 13:42 |
freeek писал: | уточни условие, кей появляется самым первым, после домена? |
да в любом месте и после домена, и в середине и в конце, в этом то вся и загвозка. Всем рейтинг))))
|
|
|
|
С нами с 20.02.06
Сообщения: 248
Рейтинг: 366
|
Добавлено: 10/02/11 в 13:45 |
ИМХО регуляркой проще, что-то типа
где вместо dd= подставляешь нужный параметр
Ну или через parse_str как было сказано выше
Код: |
$string = 'http://domen.com/?dd=WW1&ff=ee';
parse_str(parse_url($string, PHP_URL_QUERY), $result);
echo $result['dd'];
|
Последний раз редактировалось: CABMIT (10/02/11 в 13:56), всего редактировалось 2 раз(а)
|
|
|
|
С нами с 05.04.07
Сообщения: 1661
Рейтинг: 1090
|
Добавлено: 10/02/11 в 13:45 |
Перепеши предложенный мной вариант на strpos и substr и будет тебе счастье)
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 10/02/11 в 13:54 |
Код: | '%\?([\w\d]+)(?(?=\=)\=([\w\d]+))%i' |
а что сложного в этой реге? подмаска + условная подмаска
если у нас кей гуляет и может быть и там, и там, проще исползовать ее и и смотреть где проявился наш кей
либо в 2й либо в 1й
+ у нас же условие, что мы не знаем как будет называться наш ключ
в случае кода
и тем более
показан сам принцип, а ограничения можно наложить уже в зависимости от своих предпочтений
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 10/02/11 в 14:04 |
Код: | '%\?(?(?=[\w\d]+\=)[\d\w]+\=([\d\w]+)|([\d\w]+))%i' |
либо вообще вот так,
смотрим где появился, а появиться либо в 1м, либо во 2м
|
|
|
|