有没有办法用php检查url中的特定参数?

Posted

技术标签:

【中文标题】有没有办法用php检查url中的特定参数?【英文标题】:Is there a way to check for a specific parameter in a url with php? 【发布时间】:2019-05-06 18:44:54 【问题描述】:

我正在使用一个名为 chatter 的包,并设法将它包含在我自己的帖子中。 现在我有一个表叫games,每次创建一个新游戏时,我也会添加一个聊天讨论。这行得通。

因此,在单个游戏页面上,我将游戏的详细信息和聊天讨论加载为 iframe。这意味着现在我在 html 中有一个 HTML。 用户现在可以使用聊天讨论。

控制器看起来很像这样:

public function show(Game $game)

    // We know this is a game
    // Get the category first
    $category = DB::table('chatter_categories')->whereName('Game')->first();

    // Get the discussion
    // A discussion has many post(s)
    $discussion = DB::table('chatter_discussion')->whereChatterCategoryId($category->id)->first();
                                             //dd($chatter_post);
    return view('games.games', ['game' => $game, 'discussion' => $discussion, 'category' => $category]);

现在,在我的 games.blade 中,我有以下内容:

<article id="discussion">
    <iframe id="myiframe" src="/forums/discussion/ $category->slug / $discussion->slug " style="height: 800px; width: 100%;" frameborder="0" />
</article>

Chatter 默认页面带有一个标题,如下图所示:

如果我查看我创建的游戏,我还会看到有关该游戏的聊天讨论,如预期的那样:

问题:如何仅在游戏页面上删除聊天讨论的标题部分?

如果我只是直接针对标头 id

div#chatter_header 
    display: none;

它会删除标题,但如果我访问 chatter 原始前端视图,它也会消失。

这是我想检查当前页面 URL 和相应样式的时候,但这不起作用。

我的游戏路线如下所示:

Route::resource('games', 'GameController');

【问题讨论】:

你的路线定义是什么? 路线定义会有更多帮助。 试试这个 Request::segment(1) // 1 是 URL 参数位置。您可以更改此 2 或其他任何内容。 您的问题似乎是错误的,因为您要求的是一个参数,但实际上您的意思是一个路径段(根据您提供的 url 判断)。 【参考方案1】:

如果你使用 Laravel,你可以通过 URL 查询参数来做到这一点:

if ($request->has('forums')) 
    // do stuff here

见https://laravel.com/docs/5.7/requests#retrieving-input

在您的模板中,您可以使用:

@if(app('request')->input('forums'))
   <span>Do stuff</span>
@endif 

见:Lumen: get URL parameter in a Blade view

【讨论】:

这将检查查询字符串参数是否有forums @SougataBose 你是对的。我假设问题是指查询字符串参数。【参考方案2】:

你可以试试——

$parse = parse_url('http://domain.local/forums/discussion/game/sidney-game', php_URL_PATH);

if (strpos($parse, '/forums/') === 0) 
  // do what needed

它会检查路径是否以forums开头。

【讨论】:

我认为您缺少parse_url 中的第二个参数 更新了答案。【参考方案3】:

试试这样的:

$actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$parsedURL = parse_url($actual_link);
parse_str($parsedURL['forums'], $parts);
echo $query['forums'];

【讨论】:

以上是关于有没有办法用php检查url中的特定参数?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法用 url() 插入 CSS 变量?

用 PHP 检查 URL 是不是有特定的字符串

有没有办法在标准逻辑应用程序中获取特定工作流的天蓝色门户 URL?

javascript 有没有办法隐藏get的参数

有没有办法完全忽略特定项目包中的所有 MyPy 错误?

有没有办法检查 Python 中的优先级队列中是不是存在优先级?