2011-11-28 2 views
0

"happyeaster"또는 "buyaboat"와 같은 문자열을 가져 와서 "happy"및 "easter"또는 개별 단어를 반환하는 데 사용할 수있는 PHP 라이브러리를 찾고 있습니다. "사다" "배". 누구든지이 라이브러리를 다운로드하거나 구입할 수있는 기존 라이브러리 또는 이미 알고있는 것을 알고 있습니까?PHP를 사용하여 공백없이 문자열에서 단어 찾기

+0

2 단어로만 작업하거나 * n * 단어로만 작업 하시겠습니까? – abcde123483

+2

"구매" "ab" "귀리"가 다시 온다면? –

+0

라이브러리가 많은 오류를 반환하는 것처럼 들립니다. D takeaway = take a 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 분할을 찾는 간단한 해결책입니다. 당신이 할 수있는 N wordsplitting을 원하는 경우에

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

: 그렇지 않으면 당신은 여기에 파일을 직접 다운로드해야합니다

그것은 는/usr/share/DICT/단어 파일을 리눅스에서 작동

, 합리적으로 크기가 큰 단어도 완료 :) 그냥 알려주고 내가 조사해 보겠습니다.

관련 문제