Я занимаюсь переписыванием URL-адресов на PHP и должен найти URLS с косой чертой в конце, а затем выполнить 301 переадресацию. Я думал, что будет простая функция PHP, чтобы найти последнюю строку, но я ничего не мог найти. Первые инстинкты предполагают, что мне нужно использовать регулярное выражение, но я не на 100%.
Вот один пример:
http://domainx.com/characters/ Я хочу найти конечную косую черту и превратить ее в http://domainx.com/characters
Итак, какая функция поможет мне проверить, является ли последний символ «/»?
Хорошее решение для безопасного удаления последнего /
для использования
$string = rtrim($string, '/');
rtrim()
удаляет все /
s в правой части строки, когда есть один или несколько.
Вы также можете безопасно добавить ровно один сингл /
в конце URL-адреса:
$string = rtrim($string, '/').'/';
Вы можете использовать substr
:
substr($str, -1)
Это возвращает последний байт / символ в однобайтовой строке. См. Также многобайтовый строковый вариант mb_substr
.
Но если вы просто хотите удалить любые завершающие косые черты, rtrim
, вероятно, лучшее решение.
И поскольку вы работаете с URL-адресами, вы также можете взглянуть на parse_url
для анализа URL-адресов, поскольку parse_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);