【问题标题】:Compare 2 strings in PHP在 PHP 中比较 2 个字符串
【发布时间】:2019-03-15 13:29:54
【问题描述】:

我遇到了麻烦,因为我不知道如何找到我的答案。 我正在创建一个 wordpress 网站,并且我有一个搜索引擎

我在我的管理面板中创建了一个选项,并在我的选项表中编写了一些代码,但我现在的问题是

首先我用

从我的数据库中获取我的选项
$mysynonymvalue = get_option( 'synonym-custom' );

我准确地说它返回给我的是这样的东西(芒果、苹果、香蕉)(当然这是一个例子)

我的网址是这样的:

http://supserwebsite/wordpress/?sfid=2675&_sf_s=toto

或者这个

http://superwebsite/wordpress/?sfid=2675&_sf_s=virtualisation云开发

所以我创建了一个变量来捕获查询

$motsclefs3= $_GET['_sf_s'];

现在我想比较字符串 $mysynonymvalueconvert 和 $motsclefs3 以查找它是否匹配所以我写了

                            if (strpos ($mysynonymvalue, $motsclefs3) ){
                            echo '<script >
                                $(document).ready(function(){
                                    $(".vc-tabs-li:nth-child(2)").get(0).click();
                                });
                            </script>';
                            }                           
                            else{
                                echo '
                        <script >
                                $(document).ready(function(){
                                    $(".vc-tabs-li").get(0).click();
                                });
                            </script>';

                            };
                        };                  

该解决方案似乎工作正常,但我无法获得第一个结果,它确实与所有结果相比,但不是我的第一个结果。

而且它不能很好地工作,因为只有一个字母它会返回一个匹配项(例如'a')

有什么解决办法吗? 谢谢

【问题讨论】:

  • 您为什么使用strpos 作为相等性检查? === 更干净、更快捷。此外,您的 echo 语句已被注释掉,但似乎超过了两行,这意味着您的 PHP sn-p 无效。
  • 我删除了实际上没用的foreach,但是我使用strpos来比较字符串元素,因为$mysynonymvalue可以有多个数据而不仅仅是一个,我也修改了我的回显,但仍然不是我的预计^^'
  • 所以你有 mango, apple, banana 作为一个字符串值,现在你正在尝试检查它是否包含 f.e. apple?那么explode第一个值,这样你就可以得到一个包含单个单词的正确数组,然后使用in_array进行检查。
  • 事实上我尝试了类似 $myvariable = explode(' ', $motsclefs3);并修改我的“if”,使其看起来像“if (in_array($myvariable, $mysynonymvalue))”,但结果相同

标签: php wordpress for-loop strpos


【解决方案1】:

*提供的网址不可访问。

解决方案: 从 db 创建一个选项字典,然后搜索您正在查找的元素。

【讨论】:

  • 这是一个示例 URL,我不能授予您访问权限 ^^' 抱歉
  • 我不能只比较这两个元素而不创建它吗?我还尝试了一些方法来从 $mysynonymvalue 创建我的结果数组,但比较 2 个数组似乎不起作用,因为每个结果上的数据不是相同的数字
  • 直接比较数组是行不通的。如果您有array_1 和array_2,则开始迭代array_2 并在迭代时检查元素是否存在,或者如果存在则在array_1 中匹配,然后中断循环。我认为你需要元素之间的比较。 (如果我错了,请纠正我)。
【解决方案2】:

到目前为止,我向上移动了一点!所以我带着这个来了

我还有

$mysynonymvalue = get_option( 'synonym-custom' );
$mysynonymvalueconvert = preg_split('/[,]+/',$mysynonymvalue);

从我的数据库中获取我的单词并将其转换为数组。 (这样做的目的是获取用户在 wordpress 管理面板上其他地方编写的元素)

我还有

 $motsclefs3= $_GET['_sf_s'];

获取我的实际查询(这将有助于我进行比较)。我准确地说它返回了一个字符串。更具体地说,像这样的 URL (http://mywebsite/wordpress/?sfid=2675&_sf_s=examen) 会返回我(在字符串中)“examen”。

现在我的重点还是比较一下

  $motsclefs3;

在里面

 $mysynonymvalueconvert

所以我创建了一个像这样的“for”循环

for ($i = 0;  $i <= count($mysynonymvalueconvert); $i++){                                                    
                                if(in_array($motsclefs3, $mysynonymvalueconvert)){                                 
                                    echo'yes';
                                    break;
                               }
                               else{
                                    echo 'no';
                                    break;
                               };
                            };

但我仍然被阻止,仅当它与来自的第一个元素匹配时才返回“是”

 $mysynonymvalueconvert

那么有什么想法可以帮助我吗?

谢谢!

【讨论】:

  • 不顾一切的家伙!我的问题在我的数据库中^^'。实际上上面的代码是正确的,但是我的数据库没有注册好的数据。所以我只是将我的数据库更改为正常工作,并且运行良好,抱歉打扰并感谢您的回答!
猜你喜欢
  • 1970-01-01
  • 2016-09-04
  • 2019-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-08
  • 1970-01-01
相关资源
最近更新 更多