Я занимаюсь переписыванием 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);