【问题标题】:Use PHP to Find Words in a String Without Spaces使用 PHP 在没有空格的字符串中查找单词
【发布时间】:2011-11-28 15:48:43
【问题描述】:

我正在寻找一个 php 库,它可用于获取“happyeaster”或“buyaboat”之类的字符串并返回单个单词 - “happy”和“easter”或“buy”“a”“boat”。有谁知道现有的库或已经构建的可以下载或购买的东西吗?

【问题讨论】:

  • 您只希望它适用于 2 个单词还是适用于 n 个单词?
  • 如果 "buy" "ab" "oat" 回来了怎么办?
  • 听起来那个库会返回很多错误:D takeaway = take a way ||带走?
  • 如果您解释您的情况,您可能会找到其他解决方案...
  • 查看这个问题stackoverflow.com/questions/195010/… 我认为它符合您的要求...

标签: php string dictionary words


【解决方案1】:

如果你不先告诉它,php 将无法知道你在寻找哪些单词。

因此,您可能需要详细说明您试图获得有价值答案的内容。

您也许可以使用 reg ex 并有一个要查找的单词数组或 substr。

例如,php 怎么知道你想要在那个字符串中找到单词 happy 和 Easter 而不是 east?

【讨论】:

    【解决方案2】:

    听起来你需要一个全文搜索库。试试 Lucene 和 Zend Lucene 库。希望对您有所帮助。

    【讨论】:

      【解决方案3】:
      <?php
      function binary_search($elem, $array) { 
         $top = sizeof($array) -1; 
         $bot = 0; 
      
         while($top >= $bot) { 
            $p = floor(($top + $bot) / 2); 
            if ($array[$p] < $elem) 
              $bot = $p + 1; 
            elseif ($array[$p] > $elem) 
              $top = $p - 1; 
            else 
              return TRUE; 
         } 
         return FALSE; 
      } 
      
      $handle = @fopen("/usr/share/dict/words", "r");
      if ($handle) {
          while (($buffer = fgets($handle, 4096)) !== false) {
              $words[] = trim($buffer);
          }
        fclose($handle);
      }
      
      sort($words);
      
      function getmultiplewords($word1, $word2, &$dict){
          if (strlen($word1)==0) return;
          if (binary_search($word1, $dict) && binary_search($word2, $dict)) {
              echo $word2 . " / " . $word1. "\n";
          } 
          $word2 = $word2 . substr($word1,0,1);
          $word1 = substr($word1,1);
          getmultiplewords($word1, $word2, $dict);
      }
      
      
      getmultiplewords("cartalk","", $words);
      getmultiplewords("superman","", $words);
      ?>
      

      这是一个简单的解决方案,用于查找 2 个单词的拆分。

      它在带有 /usr/share/dict/words 文件的 linux 上工作,否则你必须自己在这里下载文件:

      http://www.freebsd.org/cgi/cvsweb.cgi/src/share/dict/web2?rev=1.12;content-type=text%2Fplain

      如果您想要 n 可以对大小合理的单词进行分词:) 请告诉我,我会调查的。

      【讨论】:

        【解决方案4】:

        我最终采用了这个脚本http://squarecog.wordpress.com/2008/10/19/splitting-words-joined-into-a-single-string/ 并在 PHP 中重做它。我也接受第一个字数最少的方案。

        【讨论】:

        • 既然您要求提供一个 php 库并且您已将问题标记为已回答,我相信发布代码是公平的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多