/* fonction pour extraire les mots clé du texte, sortie = balise <mot_cle_n> mot cle trouvé <mot_cle_n> */ function motsCles($keywords, $txt){ $pattern = "#(".$keywords.")+?#imU";//motif: recherche tous les mots clés présents au moins 1 fois if(preg_match_all($pattern, $txt, $resultat)){ $rMotsCles ="";//init le retour $lResultat = count($resultat[1]);//nombre de resultats $resultatTrie = array();//init tableau clean for ($i=0; $i < $lResultat; $i++){ $resultatTrie[$i] = $resultat[1][$i];//passe les résultats dans un tableau simple } $resultatTrie = array_unique($resultatTrie);//enlève les doublons $lResultatTrie = count($resultatTrie);//nbre de résultats $nbK = 0; foreach ($resultatTrie as $v){ $nbK++; $rMotsCles .= "<mot_cle_".($nbK)."><![CDATA[".$v."]]></mot_cle_".($nbK).">";//écrit le xml } return $rMotsCles ; } }
je me mets doucement à php, et je croyais que les regex étaient la solution la plus malléable pour ce que je devais faire
correspond aux attentes et ne doit être utilisée que 2 fois par mois, donc je vais m'enn contenter
function motsCles($keywords, $txt){ $pattern = "#(".$keywords.")+?#imU"; if(preg_match_all($pattern, $txt, $resultat)){ $rMotsCles =""; $lResultat = count($resultat[1]);//nombre de resultats for ($i=0; $i < $lResultat && $i<10; $i++){ $rMotsCles .= "<mot_cle_".($i+1)."><![CDATA[".$resultat[1][$i]."]]></mot_cle_".($i+1).">"; } return $rMotsCles ; } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question<?php function motsCle($kw, $t) { $aKw = explode('|',$kw); $aa = array(); foreach ($aKw as $k=>$v) { if (false !== strposi($t, $v)) array_push($aa, '<mot_cle_'.($k+1).'><![CDATA['.$v.']]></mot_cle_'.($k+1).'>'); } return implode($aa); } ?>
<?php function mots1($kw, $t) { $aKw = explode('|',$kw); $aTxt = str_word_count($t, 1); $aRes = array_intersect($aKw, $aTxt); array_walk($aRes, create_function('&$v,$k', '$v = "<mot_cle_".++$k."><![CDATA[".$v."]]></mot_cle_".$k.">";')); return implode($aRes); } ?>
désolé kohntark, mais vu que je m'étais embarqué dans ma façon je n'ai pas trop approfondi la tienne...
j'y reviendrais surement plus tard pour l'optimiser, mais déja ça marche
Reste à voir précisément les détails de ce que tu souhaites faire (le but global, la provenance des données, la taille de ces dernières, ...)