Найти последний символ в строке в PHP

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

вот пример:

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

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

6 ответов


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

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

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

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

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

можно использовать substr:

substr($str, -1)

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

но если вы просто хотите удалить любые косые черты,rtrim - пожалуй, лучшее решение.

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


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

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


можно использовать 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;

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

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

Если у вас есть php > 7.1

$string[-1]

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

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