Найти последний символ в строке в PHP - PullRequest
12 голосов
/ 13 декабря 2010

Я переписываю URL в PHP и мне нужно найти URL-адреса с косой чертой в конце, а затем выполнить перенаправление 301.Я думал, что будет простая функция PHP, чтобы найти последнюю строку, но я не смог ничего найти.Первые инстинкты заставляют меня думать, что мне нужно использовать регулярные выражения, но я не на 100%.

Вот один пример:

http://domainx.com/characters/ Я хочу найти косую черту и превратить ее в http://domainx.com/characters

Так, какая функция поможет мне проверить, еслипоследний символ "/"?

Ответы [ 6 ]

46 голосов
/ 13 декабря 2010

Хорошим решением для безопасного удаления последних / является использование

$string = rtrim($string, '/');

rtrim() удаляет все / с правой стороны строки, когда есть один или несколько.

Вы также можете безопасно добавить ровно один / в конце URL:

$string = rtrim($string, '/').'/';
30 голосов
/ 13 декабря 2010

Вы можете использовать substr:

substr($str, -1)

Возвращает последний байт / символ в однобайтовой строке.См. Также вариант многобайтовой строки mb_substr.

Но если вы просто хотите удалить любые завершающие слэши, rtrim, вероятно, является лучшим решением.

И поскольку вы работаете с URL-адресами, вы также можете взглянуть на parse_url, чтобы проанализировать URL-адреса, поскольку завершающий слеш не обязательно должен быть частью пути URL-адреса.

13 голосов
/ 13 декабря 2010

$string[strlen($string)-1] дает вам последний символ.

Но если вы хотите удалить косые черты, вы можете сделать $string = rtrim($string, '/');.Если косой черты нет, $string останется без изменений.

2 голосов
/ 13 декабря 2010

Вы можете использовать basename ()

Это вернет characters для http://domainx.com/characters/, а также http://domainx.com/characters

Вы можете сделать так: -

$page = $_SERVER['REQUEST_URI'];
$module = basename($page);

Тогда вы можете использовать $module непосредственно в вашей условной логике без каких-либо перенаправлений.

Если вы хотите собрать последний / урезанный URL, то вы можете сделать это: -

Если вы сохраняете базовый URL проекта в файле конфигурации: -

BASE_URL  = 'http://example.com'

, то вы можете сделать это: -

$page = $_SERVER['REQUEST_URI'];
$module = basename($page);
$trimmedUrl = BASE_URL.'/'.$module;
1 голос
/ 02 октября 2018

Если у вас php> 7.1

$string[-1]

Даст вам последний символ

http://sandbox.onlinephpfunctions.com/code/ff439889f14906749e4eb6328796c354c60f269b

1 голос
/ 04 мая 2012

Вы можете preg_replace() a / в конце темы

$url = 'http://domainx.com/characters/';
$url = preg_replace('/(?:\/)$/', '', $url);
...