[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помощь в регулярке
RCuPeR
Есть строка вида:
http://www.test.loc/index.php?do=/Roman/

или
test.loc/index.php?do=/Roman/

или
http://www.test.loc/Roman/


Как, с помощью регулярки получить с нее "Roman" ?

substr();
parse_url();

Не предлагать !


Заранее спасибо :)



Спустя 4 минуты, 31 секунда (27.12.2011 - 10:19) kent666 написал(а):
А если делать привязку к концу строки
"#\/(.+)\/$#"


Спустя 6 минут, 51 секунда (27.12.2011 - 10:26) duhon написал(а):
preg_match('#/[^/]+/?$#', 'http://www.test.loc/Roman/');

Спустя 12 минут, 5 секунд (27.12.2011 - 10:38) RCuPeR написал(а):
Момент!

Спустя 2 минуты, 21 секунда (27.12.2011 - 10:41) RCuPeR написал(а):
preg_match_all('#\/(.+)\/$#', $str1, $match);

Возвращает:
Array
(
[0] => Array
(
[0] => //www.test.loc/index.php?do=/Roman/
)

[1] => Array
(
[0] => /www.test.loc/index.php?do=/Roman
)

)


preg_match_all('#/[^/]+/?$#', $str1, $match);

Возвращает:
Array
(
[0] => Array
(
[0] => /Roman/
)

)

Спустя 49 секунд (27.12.2011 - 10:41) RCuPeR написал(а):
Второй вариант явно более подходящий, но тогда вопрос: как в этой же регулярке избавится от слешей ?

Спустя 7 минут, 58 секунд (27.12.2011 - 10:49) kent666 написал(а):
попробуй
preg_match_all('#\/([a-zA-Z0-9]+)\/$#', $str1, $match);

Я просто не учел что слеши могут быть в самом начале
И во втором массиве будет то что тебе надо

Спустя 9 минут, 35 секунд (27.12.2011 - 10:59) RCuPeR написал(а):
Теперь такой момент:
если во всех троих случаях в урле нету последнего слеша ???

Спустя 1 минута, 35 секунд (27.12.2011 - 11:01) kent666 написал(а):
preg_match_all('#\/([a-zA-Z0-9]+)$#', $str1, $match)

Спустя 25 минут, 13 секунд (27.12.2011 - 11:26) RCuPeR написал(а):
Последний моментик:
В строке еще должен быть символ "-".
Т.е:
$str2 = 'test.loc/index.php?do=/profile-123/';

Спустя 2 минуты, 32 секунды (27.12.2011 - 11:28) kent666 написал(а):
Для /profile-123/

preg_match_all('#\/([a-zA-Z0-9-]+)\/$#', $str1, $match)


Для /profile-123
preg_match_all('#\/([a-zA-Z0-9-]+)$#', $str1, $match)


Если не сработатет то попробуй так
preg_match_all('#\/([a-zA-Z0-9\-]+)$#', $str1, $match)

Спустя 13 минут, 58 секунд (27.12.2011 - 11:42) killer8080 написал(а):
RCuPeR
это нужно?
$t = ' 
http://www.test.loc/index.php?do=/Roman/
test.loc/index.php?do=/Roman/
http://www.test.loc/Roman/
'
;

preg_match_all('#(?:https?://)?[a-z\d\.-]+/(?:([a-z]+)/|.*do=/([a-z]+)/)#isuU', $t, $m);
echo '<pre>'.print_r($m, 1).'</pre>';
list($login) = array_values(array_unique(array_filter(array_merge($m[1], $m[2]))));
echo 'login: '.$login;

Спустя 16 минут, 5 секунд (27.12.2011 - 11:58) Эли4ка написал(а):
ого сколько примеров по регуляркам..пригодится..

Спустя 2 минуты (27.12.2011 - 12:00) killer8080 написал(а):
Цитата (Эли4ка @ 27.12.2011 - 10:58)
ого сколько примеров по регуляркам..пригодится..

Не пригодится, регулярки пишутся индивидуально под задачу smile.gif

Спустя 27 секунд (27.12.2011 - 12:01) dadli написал(а):
RCuPeR
или так:
$str = 'http://www.test.loc/index.php?do=/Roman/';
$mas = preg_split("#/#u",$str,-1,1);
echo $mas[count($mas) - 1];

Спустя 42 минуты, 42 секунды (27.12.2011 - 12:44) RCuPeR написал(а):
Всем большое спасибо !
Пока все способы не испробовал, но уверен: пригодятся wink.gif


_____________
Гнусный социопат с комплексом Бога.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.