Подтвердить что ты не робот

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

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

Вот пример:

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

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

4b9b3361

Ответ 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);