j'ai une liste de mots dans lesquels certains sont composés mots, dans l'exemplemots Supprimer composé
- Palanca
- plato
- platopalanca
Je dois enlever "plato" et "palanca" et laissez seulement "platopalanca". Utilisé array_unique pour supprimer les doublons, mais ces mots composés sont difficiles ...
Dois-je trier la liste par longueur de mot et comparer un par un? Une expression régulière est la réponse?
mise à jour: La liste des mots est beaucoup plus grand et mélangé, non seulement des mots liés
mise à jour 2: Je peux en toute sécurité imploser le tableau dans une chaîne.
mise à jour 3: J'essaie d'éviter de faire comme si c'était un genre de pompon. il doit y avoir un moyen plus efficace de le faire
Eh bien, je pense qu'un Buble-genre comme approche est la seule possible :-( Je ne l'aime pas, mais il est ce que j'ai ... toute meilleure approche
function sortByLengthDesc($a,$b){
return strlen($a)-strlen($b);
}
usort($words,'sortByLengthDesc');
$count = count($words);
for($i=0;$i<=$count;$i++) {
for($j=$i+1;$j<$count;$j++) {
if(strstr($words[$j], $words[$i])){
$delete[]=$i;
}
}
}
foreach($delete as $i) {
unset($words[$i]);
}
mise à jour 5:... Désolé je suis un crétin Jonathan Swift me faire comprendre que je pose la mauvaise question Étant donné x mots qui commencent même, je dois retirer les shortests
- "chaud, chien, stand, hotdo gstand "devrait devenir "chien, stand, hotdogstand"
- "voiture, animal de compagnie, tapis" devrait devenir "animal de compagnie, tapis"
- "Palanca, Plato, platopalanca" devrait devenir "Palanca, platopalanca"
- " platoother , autre "devrait être intouchée, ils commencent tous les deux différents
Donc un mot est un mot composé si ses composants sont aussi dans la liste? Qu'en est-il de * voiture *, * animal * et * tapis *? – Gumbo
OUI. il y a des noms de parties, donc je n'ai pas ce problème de "tapis" :-) –
Il est possible d'avoir des entrées comme "platoother" où "other" n'est pas dans le tableau, et si oui quelle action prendriez-vous ? – Neel