Nav*_*age 190 php query-string
我使用PHP来构建当前页面的URL.有时,URL的形式
www.mydomian.com/myurl.html?unwantedthngs
Run Code Online (Sandbox Code Playgroud)
请求.我想删除?
它后面的所有内容(查询字符串),以便生成的URL变为:
www.mydomain.com/myurl.html
Run Code Online (Sandbox Code Playgroud)
我目前的代码是这样的:
<?php
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {
$pageURL .= "s";
}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"] . ":" .
$_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
}
return $pageURL;
}
?>
Run Code Online (Sandbox Code Playgroud)
Ria*_*iaD 541
您可以strtok
在第一次出现之前使用它来获取字符串?
$url=strtok($_SERVER["REQUEST_URI"],'?');
Run Code Online (Sandbox Code Playgroud)
ver*_*tas 64
使用PHP手册 - parse_url()来获取所需的部分.
编辑(@Navi Gamage的示例用法)
你可以像这样使用它:
<?php
function reconstruct_url($url){
$url_parts = parse_url($url);
$constructed_url = $url_parts['scheme'] . '://' . $url_parts['host'] . $url_parts['path'];
return $constructed_url;
}
?>
Run Code Online (Sandbox Code Playgroud)
编辑(第二个完整示例):
更新了函数以确保附加方案并且没有通知msgs:
function reconstruct_url($url){
$url_parts = parse_url($url);
$constructed_url = $url_parts['scheme'] . '://' . $url_parts['host'] . (isset($url_parts['path'])?$url_parts['path']:'');
return $constructed_url;
}
$test = array(
'http://www.mydomian.com/myurl.html?unwan=abc',
'http://www.mydomian.com/myurl.html',
'http://www.mydomian.com',
'https://mydomian.com/myurl.html?unwan=abc&ab=1'
);
foreach($test as $url){
print_r(parse_url($url));
}
Run Code Online (Sandbox Code Playgroud)
将返回:
Array
(
[scheme] => http
[host] => www.mydomian.com
[path] => /myurl.html
[query] => unwan=abc
)
Array
(
[scheme] => http
[host] => www.mydomian.com
[path] => /myurl.html
)
Array
(
[scheme] => http
[host] => www.mydomian.com
)
Array
(
[path] => mydomian.com/myurl.html
[query] => unwan=abc&ab=1
)
Run Code Online (Sandbox Code Playgroud)
这是通过parse_url()传递示例url而没有第二个参数的输出(仅用于解释).
这是使用以下构造url后的最终输出:
foreach($test as $url){
echo reconstruct_url($url) . '<br/>';
}
Run Code Online (Sandbox Code Playgroud)
输出:
http://www.mydomian.com/myurl.html
http://www.mydomian.com/myurl.html
http://www.mydomian.com
https://mydomian.com/myurl.html
Run Code Online (Sandbox Code Playgroud)
Lud*_*ord 53
最佳方案:
echo parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
Run Code Online (Sandbox Code Playgroud)
如果您要将表单提交到同一个域,则无需在您的http://domain.com中加入.
zel*_*lio 12
$val = substr( $url, 0, strrpos( $url, "?"));
Run Code Online (Sandbox Code Playgroud)
小智 8
最简单的方式
$url = 'https://www.youtube.com/embed/ROipDjNYK4k?rel=0&autoplay=1';
$url_arr = parse_url($url);
$query = $url_arr['query'];
print $url = str_replace(array($query,'?'), '', $url);
//output
https://www.youtube.com/embed/ROipDjNYK4k
Run Code Online (Sandbox Code Playgroud)
小智 7
你需要至少PHP版本5.4来实现这个解决方案,而不是在一行上爆炸变量并在下一行连接,但是一个简单的一个衬里将是:
$_SERVER["HTTP_HOST"].explode('?', $_SERVER["REQUEST_URI"], 2)[0];
Run Code Online (Sandbox Code Playgroud)
服务器变量:http
://php.net/manual/en/reserved.variables.server.php
数组解除引用:https://wiki.php.net/rfc/functionarraydereferencing
您可以像这样使用 parse_url 内置函数:
$baseUrl = $_SERVER['SERVER_NAME'] . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
151693 次 |
最近记录: |