Classement sous-chaines les plus présentes dans un tableau

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Classement sous-chaines les plus présentes dans un tableau

Re: Classement sous-chaines les plus présentes dans un tableau

par @rthur » 04 janv. 2017, 20:50

Bonjour,

J'ai un cadeau pour toi :
<?php
echo preg_match_all("`(.)\g1+`", "DDAABBCCC", $matches);
var_dump($matches);
Ceci est la fonction magique pour extraire les groupes de lettres dans chaque chaine.

Il te reste ensuite à parcourir ton tableau initial (avec un foreach) pour traiter chaque chaine avec cette fonction.
Et à récupérer le résultat de cette fonction pour mettre dans un nouveau tableau les groupes de lettres que tu rencontre avec leur nombre d'occurences

Classement sous-chaines les plus présentes dans un tableau

par anthonyb » 04 janv. 2017, 17:24

Bonjour,

Je cherche sans succès un moyen d'effectué en PHP un classement des sous-chaines les plus présentes dans un tableau. Des fonctions existes pour trouver la plus grande sous-chaine commune mais le plus souvent seulement dans 2 chaines ou uniquement des sous-chaines présentes absolument dans toutes les chaines. Moi je veux pouvoir sortir un classement avec détection automatique des sous-chaines communes à au moins 2 chaines mais par forcement à toutes (avec possibilité de donner un minimum de caractères pour traiter une sous-chaine afin d'éviter les prépositions etc.).

Est-ce que quelqu'un à une idée ?

Par exemple :

Si j'ai dans un tableau les données suivantes :

array("AABBCCC", "DDAABBCCC", "AAEE", "AABBFFGG")

La fonction doit retourner quelque chose comme ça :

array(
"AA"=> 4,
"BB" => 3,
"CCC" => 2
etc.
)

Merci !