答案 0 :(得分:20)
$url = strstr($url, '#', true);
更短的方式,使用strtok
:
$url = strtok($url, "#");
将url与哈希分开的替代方法:
list ($url, $hash) = explode('#', $url, 2);
如果您根本不想要$hash
,可以在list
中省略它:
list ($url) = explode('#', $url);
使用PHP版本> = 5.4,您甚至不需要使用list
:
$url = explode('#', $url)[0];
强制性正则表达式解决方案:
$url = preg_replace('/#.*/', '', $url);
Purl是一个整洁的URL操作库:
$url = \Purl\Url::parse($url)->set('fragment', '')->getUrl();
答案 1 :(得分:3)
parse_url()还有另外一个选项;
$str = 'http://site.com/some/#anchor';
$arr = parse_url($str);
echo $arr['scheme'].'://'.$arr['host'].$arr['path'];
输出:
http://site.com/some/
答案 2 :(得分:0)
替代方式
$url = 'http://site.com/some/#anchor';
echo str_replace('#'.parse_url($url,PHP_URL_FRAGMENT),'',$url);
答案 3 :(得分:0)
使用parse_url():
function removeURLFragment($pstr_urlAddress = '') {
$larr_urlAddress = parse_url ( $pstr_urlAddress );
return $larr_urlAddress['scheme'].'://'.(isset($larr_urlAddress['user']) ? $larr_urlAddress['user'].':'.''.$larr_urlAddress['pass'].'@' : '').$larr_urlAddress['host'].(isset($larr_urlAddress['port']) ? ':'.$larr_urlAddress['port'] : '').$larr_urlAddress['path'].(isset($larr_urlAddress['query']) ? '?'.$larr_urlAddress['query'] : '');
}