Получаю текущий URL:
$redi = substr(sefRelToAbs($_SERVER['REQUEST_URI']));
Он получается типа такой:
$redi = 'http://test.com/monitor/sadasdasd-23-0-67';
Нужно заменять символы в полученном URL после последнего тире на переменную.
Т.е. получить что-то наподобие
$redi = 'http://test.com/monitor/sadasdasd-23-0-$zamena';
где $zamena - переменная описанная отдельно.
1. moroz11 - 01 Ноября, 2014 - 13:50:14 - перейти к сообщению
2. jehaby - 05 Ноября, 2014 - 18:59:06 - перейти к сообщению
Некропост, ну да ладно:
$res = preg_replace('/([^-]*)$/', $sub, $redi);
$res = preg_replace('/([^-]*)$/', $sub, $redi);
3. dcc0 - 05 Ноября, 2014 - 23:28:51 - перейти к сообщению
Думаю "-" надо экранировать.
4. jehaby - 06 Ноября, 2014 - 21:46:13 - перейти к сообщению
Хм, тестил тут: http://regex101[dot]com/ , работало нормально.
Когда сейчас попробовал на PHP потестить, появился забавный баг, что с экранированием, что без:
Когда сейчас попробовал на PHP потестить, появился забавный баг, что с экранированием, что без:
CODE (htmlphp):
скопировать код в буфер обмена
скопировать код в буфер обмена
- urf@urf-pc ~/trash $ php t2.php
- $redi == http://test.com/monitor/sadasdasd-23-0-
- $res == http://test.com/monitor/sadasdasd-23-0-42
- urf@urf-pc ~/trash $ php t2.php
- $redi == http://test.com/monitor/sadasdasd-23-0-33
- $res == http://test.com/monitor/sadasdasd-23-0-4242
- urf@urf-pc ~/trash $ php t2.php
- $redi == http://test.com/monitor/sadasdasd-23-0-7
- $res == http://test.com/monitor/sadasdasd-23-0-4242
- urf@urf-pc ~/trash $ php t2.php
- $redi == http://test.com/monitor/sadasdasd-23-0-345345435
- $res == http://test.com/monitor/sadasdasd-23-0-4242
Появляется на разных версиях PHP. Буду признателен, если кто объяснит в чем тут дело. Проблема вроде как решается изменением * на +.