2011-11-28 25 views
0

我正在寻找一个php库,可以使用像“happyeaster”或“buyaboat”这样的字符串并返回单个单词 - “开心”和“复活节”或“买”“一艘”“船”。有没有人知道现有的图书馆或已经建成的可以下载或购买的东西?使用PHP查找没有空格的字符串中的单词

+0

你只希望它为2个单词工作或为* n *单词工作吗? – abcde123483

+2

如果“购买”“ab”“燕麦”回来了怎么办? –

+0

听起来像这个库会返回很多错误:D takeaway = take way ||带走 ? – luso

回答

0

如果不先告诉它,php将无法知道您正在查找哪些词。

所以你可能需要详细阐述一下你试图获得有价值的答案。

你也许可以使用reg ex并且有一个单词数组来查找,或者substr。

例如,如何将PHP知道你想要的单词快乐和复活节,而不是东方也发现在该字符串?

0

像你需要一个全文搜索库的声音。试试Lucene和Zend Lucene库。希望这个帮助。

0
<?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 /共享/字典/单词文件Linux的,否则你将不得不自己下载此文件:

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

如果你想ň wordsplitting可为合理大小的单词做:)也只是让我知道,我会研究它。

相关问题