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/
Для /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) |
ого сколько примеров по регуляркам..пригодится.. |
Не пригодится, регулярки пишутся индивидуально под задачу
Спустя 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 написал(а):
Всем большое спасибо !
Пока все способы не испробовал, но уверен: пригодятся
Пока все способы не испробовал, но уверен: пригодятся
_____________
Гнусный социопат с комплексом Бога.