下面的代码从输入数据库的网站中删除"www."等前缀。它运行得很好。
我能否使用类似的代码来从输入到同一数据库中的网站尾部删除斜杠?
$remove_array = array('http://www.', 'http://', 'https://', 'https://www.', 'www.');
$site = str_replace($remove_array, "", $_POST['site']);
下面的代码从输入数据库的网站中删除"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要求在正则表达式的前后使用匹配字符,这是一些愚蠢的原因。
$a =~ s/foo/bar/;
或 if ($myVar =~ m#/$#)
。 - Tom Mayfield最简单的方法:
$url = rtrim($url,'/');
John是第一个提出解决方案的人,我认为他的方案更优雅,但是这里有另一种方案:
$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);
would be
和
https://money.yandex.ru/to/410011131033942/
would behttps://money.yandex.ru/to/410011131033942
这个的PHP代码是:。
if(stripos($url, '?')) {
$url = preg_replace('{/\?}', '?', $url);
} else {
$url = preg_replace('{/$}', '', $url);
}
最优雅的解决方案是使用rtrim()。
$url = 'http://www.domain.com/';
$urlWithoutTrailingSlash = rtrim($url, '/');
编辑
我忘了 rtrim();
您还可以尝试玩一下 parse_url()。
$new_string = preg_replace('|/$|', '', $string);
rtrim()
函数有什么问题吗? - Decent Dabbler<?php
header('location: '.preg_replace("/\/$/","",$_SERVER['REQUEST_URI']));
?>