Удаление косой черты из конца URL - PullRequest
11 голосов
/ 23 июня 2009

Приведенный ниже код удаляет «www.» И т. Д. С начала веб-сайтов, которые вводятся в базу данных. Отлично работает.

Есть ли способ, которым я мог бы использовать подобный код для удаления косой черты из хвостовой части веб-сайта, который вводится в ту же базу данных?

$remove_array = array('http://www.', 'http://', 'https://', 'https://www.', 'www.');
$site = str_replace($remove_array, "", $_POST['site']);

Ответы [ 8 ]

41 голосов
/ 23 июня 2009

Вы можете передать строку символов, которую хотите обрезать, в строку семейства функций trim. Кроме того, вы можете использовать rtrim, чтобы обрезать только конец строки:

$site = rtrim($site, "/");
21 голосов
/ 23 июня 2009
$site = preg_replace('{/$}', '', $site);

Здесь используется относительно простое регулярное выражение . $ означает только совпадение косых черт в конце строки, поэтому оно не удалит первый слеш в stackoverflow.com/questions/ Фигурные скобки {} - это просто разделители; По какой-то глупой причине PHP требует сопоставления символов и передней и задней части регулярных выражений.

5 голосов
/ 12 марта 2011

Самый простой метод:

$url = rtrim($url,'/');
3 голосов
/ 23 июня 2009

Джон был первым, и я думаю, что его решение должно быть предпочтительнее, потому что оно намного элегантнее, но вот другое:

$site = implode("/", array_filter(explode("/", $site)));

Обновление

Thx. Я обновил его, и теперь даже обрабатывает такие вещи, как это

$site = "///test///test//"; /* to => test/test */

Что, вероятно, делает его еще круче, чем принятый ответ;)

2 голосов
/ 12 марта 2011

Ты этого хочешь?

$url = 'http://www.example.com/';

if (substr($url, -1) == '/')
    $url = substr($url, 0, -1);
0 голосов
/ 12 марта 2011

Возможно, лучшим решением будет использование .htaccess, но php также может сделать это примерно так:

<?php
    header('location: '.preg_replace("/\/$/","",$_SERVER['REQUEST_URI']));
?>
0 голосов
/ 12 марта 2011
$new_string = preg_replace('|/$|', '', $string);
0 голосов
/ 23 июня 2009

Самое элегантное решение - использовать rtrim () .

$url = 'http://www.domain.com/';

$urlWithoutTrailingSlash = rtrim($url, '/');

EDIT

Я забыл про rtrim ();

Вы также можете поиграть parse_url () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...