Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不能删除?之后呢?使用PHP_Php_Html_Url - Fatal编程技术网

不能删除?之后呢?使用PHP

不能删除?之后呢?使用PHP,php,html,url,Php,Html,Url,我的URL的结构如下www.example.co.uk/dynamicpage/page?gclid=Cj0KCQ877xx 我正在尝试删除www.example.co.uk/dynamicpage/page $data = "http://example.co.uk/dynamicpage/page?gclid=Cj0KCQ877xx"; $url_arr = parse_url($data); print_r($url_arr); 我试过以下方法 $data = explode('?',

我的URL的结构如下www.example.co.uk/dynamicpage/page?gclid=Cj0KCQ877xx

我正在尝试删除www.example.co.uk/dynamicpage/page

$data = "http://example.co.uk/dynamicpage/page?gclid=Cj0KCQ877xx"; 
$url_arr = parse_url($data); print_r($url_arr);
我试过以下方法

$data = explode('?',$data); $data = $data[0];
还尝试使用stru\u replace,但运气不佳

我一直在尝试人们对我遇到的类似问题提出的其他建议,但似乎我所做的一切都忽略了

编辑

dynamicpage将根据url中键入的内容从我的数据库中提取城市/城镇名称,因此示例www.example.co.uk/london动态页面将显示伦敦的内容www.example.co.uk/london/page也应该显示伦敦的内容,但不使用?gclid=Cj0KCQ877xx它只显示没有伦敦内容的页面,只显示我拥有的标准内容

更新代码

$data = "http://example.co.uk/dynamicpage/page?gclid=Cj0KCQ877xx"; 
$url_arr = parse_url($data); print_r($url_arr);
返回

Array ( [scheme] => http [host] => example.co.uk [path] => /dynamicpage/page [query] => gclid=Cj0KCQ877xx )
编辑

使用htaccess解决的问题

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} "gclid=" [NC]
RewriteRule (.*) /$1? [R=301,L,QSD]
<IfModule mod_rewrite.c>

重新启动发动机
重写基/
RewriteCond%{QUERY_STRING}“gclid=“[NC]
重写规则(.*)/$1?[R=301,L,QSD]

您可以使用
substr
功能:

$data = substr($data, 0, strpos($data, "?"));

通过这种方式,您可以从字符串的开始到“?”字符第一次出现的索引获取该字符串。

不清楚为什么您的方式不起作用,但可能更干净的方法是
parse\u url

$parts = parse_url('www.example.co.uk/dynamicpage/page?gclid=Cj0KCQ877xx');
echo $parts['path'];
试试这个:

$url = strtok($url, '?');
$url
是您的
www.example.co.ukdynamic/page/page?gclid=Cj0KCQ877xx


strtok
之后是
www.example.co.uk/dynamicpage/page

如果您想获得没有查询字符串的实际URL,则可以使用:


根据,
parse_url()
将返回url的所有组件,以便找到正确的路径

除了上面的其他建议外,您还可以使用正则表达式将其删除:

$url=preg\u replace('/\?.+$/',''$url);

使用htaccess重写url

我相信gclid是谷歌标签经理

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} "gclid=" [NC]
RewriteRule (.*) /$1? [R=301,L,QSD]
<IfModule mod_rewrite.c>

重新启动发动机
重写基/
RewriteCond%{QUERY_STRING}“gclid=“[NC]
重写规则(.*)/$1?[R=301,L,QSD]

var\u dump($data)
返回什么?你爆炸没问题。你确定你的
$data
变量实际上是你认为爆炸前的变量吗?你得到了什么结果?返回字符串(5)“london”@MarlinDOODOO,所以
$data
中没有
。dynamicpage每次都会不同though@MarlinDOODOO:解析url将起作用,首先,让它成为动态的url,然后在解析url方法中使用它。你说的是伦敦吗?你想搬走伦敦吗@马林杜诺?页面仍然显示在url中,但在返回的结果中会被删除,但gclid=Cj0KCQ877xxremains@MarlinDOODOO:你能用更新的代码更新你的问题吗!!!非常感谢。不过,我必须把所有其他htaccess重写放在首位才能工作。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} "gclid=" [NC]
RewriteRule (.*) /$1? [R=301,L,QSD]
<IfModule mod_rewrite.c>