我正在寻找一个 php 库,它可用于获取像“happyeaster”或“buyaboat”这样的字符串并返回单个单词 - “happy”和“easter”或“buy”“a”“boat”。有谁知道现有的库或已经构建的可以下载或购买的东西?
问问题
2150 次
4 回答
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/share/dict/words文件的 linux ,否则您必须在此处自己下载文件:
http://www.freebsd.org/cgi/cvsweb.cgi/src/share/dict/web2?rev=1.12;content-type=text%2Fplain
如果你想要n分词,也可以对合理大小的词进行 :) 告诉我,我会调查的。
于 2011-11-28T16:40:31.083 回答
0
我最终接受了这个脚本http://squarecog.wordpress.com/2008/10/19/splitting-words-joined-into-a-single-string/并在 PHP 中重做它。我也接受字数最少的第一个解决方案。
于 2012-12-12T16:21:05.577 回答
0
如果你不先告诉它,php 将无法知道你在寻找哪些单词。
因此,您可能需要详细说明您试图获得有价值的答案的内容。
您也许可以使用 reg ex 并有一个要查找的单词数组或 substr。
例如,php 怎么知道您想要在该字符串中找到单词happy 和 Easter 而不是east?
于 2011-11-28T15:51:57.577 回答
0
听起来你需要一个全文搜索库。试试 Lucene 和 Zend Lucene 库。希望这有帮助。
于 2011-11-28T15:52:42.557 回答