【问题标题】:Search a word in a string using php function使用 php 函数在字符串中搜索单词
【发布时间】:2013-04-02 08:43:47
【问题描述】:

当我搜索“银行”时,它应该显示以下列表中的 Bank-List1、Bank-List2。

Railway-List、Bank-List1、Bank-List2、教育、电子商务、文章、Railway-List1。

有没有php函数可以显示?

我得到了完全匹配的输出。但是这种类型的搜索没有结果。

请帮助我找到解决方案。

【问题讨论】:

    标签: php string function


    【解决方案1】:

    你可以使用stristr

    stristr — Case-insensitive strstr()

    <?php    // Example from PHP.net
      $string = 'Hello World!';
      if(stristr($string, 'earth') === FALSE) {
        echo '"earth" not found in string';
      }
    // outputs: "earth" not found in string
    ?> 
    

    因此,对于您的情况,如果您的列表位于名为 $values 的数组中

    你可以的

    foreach($values as $value)
    {
          if(stristr($value, 'bank') !== FALSE) 
          {
            echo $value."<br>";
          }
    }
    

    【讨论】:

    • @raghu 如果您通过此回答帖子得到解决方案,请将其标记为正确答案。
    【解决方案2】:

    您可以使用 stristr 来完成。此函数返回从第一次出现 needle 到结束的所有 haystack。返回匹配的子字符串。如果没有找到 needle,则返回 FALSE。

    完整代码如下:

    <?php
    
      $str="Railway-List, Bank-List1, Bank-List2, Education, Ecommerce, Articles, Railway-List1";
      $findme="bank";
      $tokens= explode(",", $str);
      for($i=0;$i<count($tokens);$i++)
      {
        $trimmed =trim($tokens[$i]);
        $pos = stristr($trimmed, $findme);
        if ($pos === false) {}
        else
        {
            echo $trimmed.",";
        }
      }
    ?>
    

    DEMO

    【讨论】:

      【解决方案3】:

      此解决方案仅对这种文本模式有效,例如:word1、word2、word3

      <?php
      $text = 'Railway-List, Bank-List1, Bank-List2, Education, Ecommerce, Articles, Railway-List1.';
      
      
      function search_in_text($word, $text){
      
       $parts = explode(", ", $text);
       $result = array();
       $word = strtolower($word);
      
       foreach($parts as $v){
      
        if(strpos(strtolower($v), $word) !== false){
         $result[] = $v;
        }
      
       }
      
       if(!empty($result)){
          return implode(", ", $result);
       }else{
          return "not found";
       }
      }
      
      echo search_in_text("bank", $text);
      echo search_in_text("none", $text);
      ?>
      

      输出:

      Bank-List1, Bank-List2
      not found
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-27
        • 1970-01-01
        • 1970-01-01
        • 2016-04-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多