PHP中有没有可靠的方法来清理锚标签的URL?
所以输入:
输出:
$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();
parse_url()还有另一种选择;
$str = 'http://site.com/some/#anchor';
$arr = parse_url($str);
echo $arr['scheme'].'://'.$arr['host'].$arr['path'];
输出:
http://site.com/some/
替代方式
$url = 'http://site.com/some/#anchor';
echo str_replace('#'.parse_url($url,PHP_URL_FRAGMENT),'',$url);
使用 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'] : '');
}