Найти последний символ в строке в 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