【问题标题】:Check if only specific parameter is in URL检查 URL 中是否只有特定参数
【发布时间】:2020-02-26 15:38:48
【问题描述】:

我想根据URL中的参数显示一些内容。

例如:我有一个名为color的过滤器。

网址如下所示:

/?filter_color=黑色

现在我可以为黑色添加一些内容。

但现在我遇到了多个有源过滤器的问题。

目前,如果 URL 如下所示,我也会将内容显示为黑色:

/?filter_color=黑色,白色

但如果有多个过滤器处于活动状态,我不想显示任何内容。

这是我当前的代码:

if ( (isset($filter_color) == 'black') ) :

    echo 'content for black';

endif;

有什么方法可以询问是否只有过滤器“black”? 我尝试了以下方法,但会引发错误:

isset($filter_color) === 'black'

【问题讨论】:

  • Big Note isset() 返回一个布尔值,所以 TRUE 或 FALSE,所以这些测试都没有任何意义
  • 好的,但是有什么方法可以检查特定参数吗?
  • if( isset( $_GET['filter_color'] ) && $_GET['filter_color']=='black'){} ??
  • 数据从何而来,又如何而来?或者您是从头开始并想要构建一些东西?
  • @FunkFortyNiner 没问题

标签: php parameters get


【解决方案1】:

检查一个字符串是否与另一个字符串相同

如果您想检查一个字符串是否只包含一组特定的字符,您可以使用strcmpstrcasecmp。 strcasecmp 不区分大小写

if ( strcasecmp($filter_color, 'black') === 0) ) :
  echo 'content for black';
endif;

如果字符串相同,函数将返回 0。如果字符串不同,它将返回 1(如果第一个字符串大于第二个字符串)或 -1(如果第一个字符串小于第二个字符串) .

检查一个字符串是否包含另一个字符串(但可能包含更多):

如果您想查看字符串中是否有黑色,则可以使用strpos。第一个参数是您要查找的字符串,第二个参数是您要查找的字符串。如果找到,它将返回它在字符串中出现的位置。

if ( strpos($filter_color, 'black') !== 0) ) :
  echo 'content for black';
endif;

请注意,如果字符串位置位于字符串的开头,它将返回 0。您必须使用 === 或 !==

【讨论】:

  • 它有点工作,但如果根本没有过滤器,内容也会显示!?
猜你喜欢
  • 2011-07-18
  • 2011-04-21
  • 1970-01-01
  • 2021-02-28
  • 1970-01-01
  • 2012-08-07
  • 2011-10-30
  • 2019-05-06
  • 1970-01-01
相关资源
最近更新 更多