Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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 清除文件中的奇怪参数\u获取\u内容_Php - Fatal编程技术网

Php 清除文件中的奇怪参数\u获取\u内容

Php 清除文件中的奇怪参数\u获取\u内容,php,Php,我的客户通过服务与数据库联系。当我执行某些操作时,我使用file\u get\u contents调用服务URL,然后处理响应 我认为当用户从google搜索结果进入网站时,google会在我的服务URL中添加一些参数,这些参数属于文件\u get\u contents 比如说,, 应该是, file_get_contents(service.domain/service_name?param1=0) 但谷歌在url的末尾添加了一些奇怪的参数。像这样: file_get_contents(s

我的客户通过服务与数据库联系。当我执行某些操作时,我使用
file\u get\u contents
调用服务URL,然后处理响应

我认为当用户从google搜索结果进入网站时,google会在我的服务URL中添加一些参数,这些参数属于
文件\u get\u contents

比如说,, 应该是,

file_get_contents(service.domain/service_name?param1=0) 
但谷歌在url的末尾添加了一些奇怪的参数。像这样:

file_get_contents(service.domain/service_name?param1=0&force=1)
我看到了两三个奇怪的参数

force = 1
gclid=CNC-jvTapbcCFaaj
我不知道如何处理和删除这些参数

在调用包含文件内容的URL之前,如何删除这些奇怪的参数

这是我的职责:

public function getWhere($keyword)
{
    $locale = session('locale');
    if($locale != "en" && $locale != "")
    {
        $locale = "_".session('locale');
    }else{
        $locale = "";
    }

    $page = file_get_contents(getenv('API_URL')."station_info?search.url=".$keyword);
    $page = json_decode($page);
    $page = (array) $page->rows;
    $station = $page[0];

    if($station->search->status == 1)
    {
        return redirect('/');
    }
    return view('station', compact('station', 'locale'));
}
奇怪的参数将自己添加到URL的末尾

编辑

我想有人想做点什么$关键字必须采用一个字符串,即站点名称,例如,London。
但是有人试图发送London&force=1,所以我必须检查$keyword变量。

您可以通过
parse\u url
函数解析url,删除不需要的参数,或者只保留想要的参数,然后重新构建url

使用
parse_url
函数后,您可能需要通过
parse_str
函数解析
query
,因此代码如下所示:

$urlParsed = parse_url("service.domain/service_name?param1=0&force=1");
$params = parse_str ($urlParsed['query']);
$newParams = [];
$neededParams = ['param1', 'param2'];
foreach ($neededParams as $p) {
    if (isset($params[$p])) {
        $newParams[$p] = $params[$p];
    }
}

$newUrl = $urlParsed['scheme'] . '://' . $urlParsed['host'] . $urlParsed['path'] . '?' . http_build_query($newParams);

file_get_contents($newUrl);

我没有测试该代码,但我希望想法很清楚,您可以根据需要修改它。

PHP提供了一些处理URL的函数。使用并将URL分解为多个部分并解码参数,根据需要更改/删除参数,然后使用生成新的查询字符串并将其连接到URL的其余部分(无需函数,字符串连接(
)就足够了)。Google无法影响您的代码。现在,如果您的代码天真地从请求中获取所有参数并将其传递,这是一个问题,但是在没有看到您的代码的情况下,没有任何帮助方法不会返回任何内容。因为url是错误的,请使用正确的url,例如
http://service.com/service_name?param1=0&force=1
您没有得到它。它是。它不返回值,这就是它的工作方式。这并不取决于它作为参数接收的值。啊,是的,你是对的。正如我提到的,我没有测试代码:)