Teilstring im String finden und Teilstring aus gleichem Array löschen

NTDY

Erfahrenes Mitglied
Ich habe ein Array:
PHP:
$array = array("AA","AAB","BB","BBC","CC");
und ich möchte, dass alle Teilstrings aus dem Array gelöscht werden, die einen längeren String im selben Array enthalten.

Mein Algorithmus dazu ist:
PHP:
for($i=0;$i<=count($array);$i++){
	for($j=0;$j<=count($array);$j++){
		//erzeuge eine Variable um ein Pattern aus $a bilden zu können
		$a = $array[$i];
		$b = $array[$j];
		//suche Teilstring a in String b und sei a echt kleiner b um die Sicherheit "TEIL"string zu gewährleisten
		if(preg_match("/$a/",$b) and $a < $b){
			if($a!=""){
				echo $array[$i]. " ist in ".$array[$j]." enthalten<br />";	
				$neues_array[] = $array[$j];
			}
		}
	}
}

Allerdings wird in diesem Algorithmus nicht der String CC aufgenommen, da dieser schon der längste String ist und keinen Teilstring im gleichen Array enthält.

Wie könnte die Lösung dazu aussehen?
 
Zuletzt bearbeitet:
PHP:
$array = array("AA","AAB","BB","BBC","CC");
sort($array);
$neues_array = array();
$n = count($array);
for( $i=0; $i<$n; $i++ ) {
	$a = $array[$i];
	$l = strlen($a);
	if( $l == 0 ) {
		continue;
	}
	for( $j=$i+1; $j<$n; $j++ ) {
		$b = $array[$j];
		if( $l >= strlen($b) ) {
			continue;
		}
		if( (strpos($b, $a) !== false) ) {
			continue 2;
		}
	}
	$neues_array[] = $a;
}
 
Zurück