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