Удаление косой черты из конца URL
Приведенный ниже код удаляет "www." И т.д. С начала веб-сайтов, которые вводятся в базу данных. Работает отлично.
Есть ли способ, которым я мог бы использовать подобный код, чтобы удалить косую черту из хвоста веб-сайта, который введен в ту же базу данных?
$remove_array = array('http://www.', 'http://', 'https://', 'https://www.', 'www.');
$site = str_replace($remove_array, "", $_POST['site']);
Ответы
Ответ 1
$site = preg_replace('{/$}', '', $site);
В этом случае используется относительно простое выражение . $
означает только совпадение косых черт в конце строки, поэтому он не удаляет первую косую черту в stackoverflow.com/questions/
. Кудрявые фигурные скобки {}
являются просто разделителями; PHP требует совпадения символов и передних и задних регулярных выражений по какой-то глупой причине.
Ответ 2
Вы можете передать строку символов, которую вы хотите удалить из строки, в семейство функций trim
. Кроме того, вы можете использовать rtrim
для обрезки только конца строки:
$site = rtrim($site, "/");
Ответ 3
Самый простой способ:
$url = rtrim($url,'/');
Ответ 4
Джон был первым, и я думаю, что его решение должно быть предпочтительным, потому что оно более элегантно, однако вот еще одно:
$site = implode("/", array_filter(explode("/", $site)));
Обновление
спасибо. Я обновил его и теперь даже обрабатывает такие вещи
$site = "///test///test//"; /* to => test/test */
Что, вероятно, делает его еще более холодным, чем принятый ответ;)
Ответ 5
Это то, что вы хотите?
$url = 'http://www.example.com/';
if (substr($url, -1) == '/')
$url = substr($url, 0, -1);
Ответ 6
$result = rtrim( 'example.com/', '/' );
Ответ 7
Самое элегантное решение - использовать rtrim().
$url = 'http://www.domain.com/';
$urlWithoutTrailingSlash = rtrim($url, '/');
ИЗМЕНИТЬ
Я забыл про rtrim();
Вы также можете играть parse_url().
Ответ 8
$new_string = preg_replace('|/$|', '', $string);
Ответ 9
Возможно, лучшим решением будет использование .htaccess, но php также может сделать это примерно так:
<?php
header('location: '.preg_replace("/\/$/","",$_SERVER['REQUEST_URI']));
?>