Найти последнего символа в строке в PHP
Я занимаюсь переписыванием URL-адресов на PHP и должен найти URLS с косой чертой в конце, а затем выполнить 301 переадресацию. Я думал, что будет простая функция PHP, чтобы найти последнюю строку, но я ничего не мог найти. Первые инстинкты предполагают, что мне нужно использовать регулярное выражение, но я не на 100%.
Вот пример:
http://domainx.com/characters/ Я хочу найти конечную косую черту и превратить ее в http://domainx.com/characters
Итак, какая функция поможет мне проверить, является ли последний символ "/"?
Ответы
Ответ 1
Хорошим решением для безопасного удаления последнего /
является использование
$string = rtrim($string, '/');
rtrim()
удаляет все /
в правой части строки, когда есть один или несколько.
Вы также можете безопасно добавить ровно один единственный /
в конце URL-адреса:
$string = rtrim($string, '/').'/';
Ответ 2
Вы можете использовать substr
:
substr($str, -1)
Возвращает последний байт/символ в однобайтовой строке. См. Также многобайтовый вариант строки mb_substr
.
Но если вы просто хотите удалить любые косые черты, rtrim
, вероятно, лучшее решение.
И поскольку вы работаете с URL-адресами, вы также можете взглянуть на parse_url
, чтобы анализировать URL-адреса, поскольку конечная косая черта не обязательно должна быть частью URL-адреса путь.
Ответ 3
$string[strlen($string)-1]
дает вам последний символ.
Но если вы хотите разделить трейлинг-косые черты, вы можете сделать $string = rtrim($string, '/');
. Если нет косой черты, $string
останется неизменным.
Ответ 4
Вы можете использовать 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;
Ответ 5
Вы можете preg_replace()
a /
в конце темы
$url = 'http://domainx.com/characters/';
$url = preg_replace('/(?:\/)$/', '', $url);