2013-07-15 3 views
1

D'accord, j'ai les données suivantes:, mots de recherche dans la chaîne

liagel - ag, el, li, âge, gel, Lia

et je suis en train de trouver un moyen pour obtenir le match exact de la chaîne, vous voyez que tous les mots existent dans la chaîne mais j'aimerais filtrer cette façon de sorte que le résultat final que je reçois est:

liagel = gel Lia

Merci.

+0

est le match qui va être fait toujours en 2 segments – DevZer0

+0

Je ne pense pas que je vais avoir plus de 3 mots dans une chaîne. Un autre exemple est anarad - annonce, an, ar, na, ana, rad ... et oui il pourrait y avoir plus d'un résultat. – krasenslavov

+0

Cet exemple correspond également fait avec 2 éléments – DevZer0

Répondre

1

La solution:

J'ai trouvé une solution rapide et facile en utilisant la bibliothèque Math Combinatoire de PEAR http://pear.php.net/package/Math_Combinatorics/ (la classe crée toutes les variantes disponibles à partir des mots-clés, alors je correspondent à ces variations sur ma chaîne d'origine et obtenir mes résultats finaux). code simple (à partir de 2 mots) ressemblerait à ceci:

require_once 'library/Combinatorics.php'; 
$c = new Math_Combinatorics; 

$words = array('ag', 'el', 'li', 'age', 'gel', 'lia'); 
$string = 'liagel'; 

foreach($c->permutations($words, 2) as $p) { 

    $tmp_word = join('', $p); 
    $tmp_word_2 = join(' ', $p); 

    if ($tmp_word == $string) { 

     $found[$string] = $tmp_word_2; 
    } 
}