• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[PHP] Opimierung eines Wortsuchprogramms

paul schmitz

New member
Hallo,
ich habe ein Programm geschrieben, das alle Wörter findet, deren Buchstaben in einem Startwort sind. Es gibt eine Datei german.dic in der fast alle deutschen Wörter mit Zeilenumbrüchen separiert gelistet sind. Diese 26.6MB große Datei enthält 1695825 Wörter.
PHP:
<h1>Gefundene Wörter bei Suche nach <?php echo $_GET['wort']; ?></h1>
<?php
$wort=strtoupper($_GET['wort']);
$wortarray=0;

function wort2buchstaben($eingabewort){
	$buchstabenarray=Array();
	for($i=0;$i<26;$i++){
		$buchstabenarray[$i]=0;
	}
	for($i=0;$i<strlen($eingabewort);$i++){
		$xyz=ord($eingabewort[$i])-65;
		if($xyz>-1&&$xyz<66){
			$buchstabenarray[$xyz]++;
		}
	}
	return $buchstabenarray;
}

function vergleiche ($woerterbuchwort,$wortarray){
	$woerterbuchwortarray=wort2buchstaben($woerterbuchwort);
	$uebereinstimmung=true;
	for($i=0;$i<26;$i++){
		if($wortarray[$i]<$woerterbuchwortarray[$i]){
			$uebereinstimmung=false;
		}
	}
	return $uebereinstimmung;
}


$wortarray = wort2buchstaben ($wort);
$handle=fopen('german.dic','r');
$count=0;
while (!feof($handle)&&$count<35000) {
	$buffer = strtoupper(fgets($handle));
	if(vergleiche($buffer,$wortarray)){
		$count++;
		echo $count.": ".$buffer." (".strlen($buffer).")<br/>";
	}
}
fclose($handle);
?>
Beispiel: Suche nach Ananassalat:
Code:
1: AAL (5)
2: AALS (6)
3: AALST (7)
4: AALT (6)
5: AAS (5)
6: ALAN (6)
7: ALS (5)
8: ALT (5)
9: ALTANS (8)
10: AN (4)
11: ANAL (6)
12: ANANAS (8)
13: ANLASS (8)
14: ANLASST (9)
15: ANLäSST (9)
16: ANN (5)
17: ANNA (6)
18: ANNAS (7)
19: ANS (5)
20: Aß (4)
21: ASS (5)
22: AßT (5)
23: AST (5)
24: äST (5)
25: ASTA (6)
26: AT (4)
27: ATLAS (7)
28: ÄTNA (6)
29: ATü (5)
30: LAN (5)
31: LANS (6)
32: LAS (5)
33: LASS (6)
34: LASSA (7)
35: LASST (7)
36: LäSST (7)
37: LAST (6)
38: LAST (6)
39: LöSS (6)
40: LöST (6)
41: LT (4)
42: NA (4)
43: NASA (6)
44: NASAL (7)
45: NASS (6)
46: NäSST (7)
47: NATAL (7)
48: NATALS (8)
49: NL (4)
50: NN (4)
51: Nö (4)
52: NöLST (7)
53: NöLT (6)
54: NS (4)
55: NSA (5)
56: NT (4)
57: ÖL (4)
58: ÖLS (5)
59: ÖLSAAT (8)
60: öLST (6)
61: öLT (5)
62: SA (4)
63: SAAL (6)
64: SAALS (7)
65: SAAT (6)
66: SALAT (7)
67: SALATS (8)
68: SALSA (7)
69: SALT (6)
70: SALü (6)
71: SAN (5)
72: SANAA (7)
73: SANN (6)
74: SANNST (8)
75: SANNT (7)
76: SANTA (7)
77: SANTANA (9)
78: SANTANAS (10)
79: SAS (5)
80: SAß (5)
81: SAßT (6)
82: SäST (6)
83: SäT (5)
84: SATAN (7)
85: SATANAS (9)
86: SATANS (8)
87: SS (4)
88: SSL (5)
89: ST (4)
90: STAN (6)
91: Süß (5)
92: SüßT (6)
93: TAL (5)
94: TALS (6)
95: TAN (5)
96: TLS (5)
Das Programm arbeitet ziemlich langsam (das liegt nicht nur an meinem lahmen Rechner), es braucht bis zu 5 Minuten. Umlaute werden leider ignoriert d.H. es macht keinen Unterschied, ob bei der Ausgabe welche drin sind. Sind die Zeit und das Umlautverhalten optimierbar?
 
Ich bin mir ziemlich sicher, dass man das optimieren kann. So könntest du einen Großteil der Arbeit nur einmal berechnen, speichern und dann immer wieder verwenden: die Anzahl der Buchstaben in den Wörtern.
Außerdem solltest du die Schleife abbrechen, wenn $uebereinstimmung auf false gesetzt wird.
 
Ich bin mir ziemlich sicher, dass man das optimieren kann. So könntest du einen Großteil der Arbeit nur einmal berechnen, speichern und dann immer wieder verwenden: die Anzahl der Buchstaben in den Wörtern.
Das heißt hinter dem Wort nach einem Trennzeichen, das nicht in den Wörtern vorkommt (z.B. "§"), die Buchstabenbelegung in Form von AnzahlAs,AnzahlBs,AnzahlCs u.s.w speichern. Ich werde mal versuchen ein Programm dafür zu schreiben, das sollte nicht so schwierig sein.

Außerdem solltest du die Schleife abbrechen, wenn $uebereinstimmung auf false gesetzt wird.
Also ein break; in der if nach $uebereinstimmung=false;.
 
Ein binäres Speicherformat wäre eventuell schneller einzulesen, aber auch in Textform sollte es schon schneller sein.

Wenn dann würde ich aber ein standardisiertes Textformat verwenden. Z.B. JSON würde sich bei dir anbieten.

- - - Aktualisiert - - -

PS: Wobei bei JSON die komplette Datei erst eingelesen werden muss, bevor geparst wird... vielleicht ist CSV doch besser.
 
Meine Bemühungen haben ein Umwandelskript ergeben, das die Wörter mit Buchstabenangaben kommasepariert ausgibt.
Die Ausgabe der ersten 100 Wörter:
Code:
AACHEN ,2,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
AACHENER ,2,0,1,0,2,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,
AACHENERIN ,2,0,1,0,2,0,0,1,1,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,
AACHENERINNEN ,2,0,1,0,3,0,0,1,1,0,0,0,0,4,0,0,0,1,0,0,0,0,0,0,0,0,
AACHENERN ,2,0,1,0,2,0,0,1,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,
AACHENERS ,2,0,1,0,2,0,0,1,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,
AACHENS ,2,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,
AAL ,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
AALäHNLICH ,2,0,1,0,0,0,0,2,1,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
AALäHNLICHE ,2,0,1,0,1,0,0,2,1,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
AALäHNLICHEM ,2,0,1,0,1,0,0,2,1,0,0,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,
AALäHNLICHEN ,2,0,1,0,1,0,0,2,1,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,
AALäHNLICHER ,2,0,1,0,1,0,0,2,1,0,0,2,0,1,0,0,0,1,0,0,0,0,0,0,0,0,
AALäHNLICHES ,2,0,1,0,1,0,0,2,1,0,0,2,0,1,0,0,0,0,1,0,0,0,0,0,0,0,
AALANGELFISCHEREI ,3,0,1,0,3,1,1,1,2,0,0,2,0,1,0,0,0,1,1,0,0,0,0,0,0,0,
AALANGELN ,3,0,0,0,1,0,1,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,
AALANGELNS ,3,0,0,0,1,0,1,0,0,0,0,2,0,2,0,0,0,0,1,0,0,0,0,0,0,0,
AALARTIG ,3,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,
AALARTIGE ,3,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,
AALARTIGEM ,3,0,0,0,1,0,1,0,1,0,0,1,1,0,0,0,0,1,0,1,0,0,0,0,0,0,
AALARTIGEN ,3,0,0,0,1,0,1,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,
AALARTIGER ,3,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,2,0,1,0,0,0,0,0,0,
AALARTIGES ,3,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,
AALBESTAND ,3,1,0,1,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,
AALBESTäNDE ,2,1,0,1,2,0,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,
AALBESTäNDEN ,2,1,0,1,2,0,0,0,0,0,0,1,0,2,0,0,0,0,1,1,0,0,0,0,0,0,
AALBESTANDES ,3,1,0,1,2,0,0,0,0,0,0,1,0,1,0,0,0,0,2,1,0,0,0,0,0,0,
AALBESTANDS ,3,1,0,1,1,0,0,0,0,0,0,1,0,1,0,0,0,0,2,1,0,0,0,0,0,0,
AALBEZOGEN ,2,1,0,0,2,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,1,
AALBEZOGENE ,2,1,0,0,3,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,1,
AALBEZOGENEM ,2,1,0,0,3,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,
AALBEZOGENEN ,2,1,0,0,3,0,1,0,0,0,0,1,0,2,1,0,0,0,0,0,0,0,0,0,0,1,
AALBEZOGENER ,2,1,0,0,3,0,1,0,0,0,0,1,0,1,1,0,0,1,0,0,0,0,0,0,0,1,
AALBEZOGENES ,2,1,0,0,3,0,1,0,0,0,0,1,0,1,1,0,0,0,1,0,0,0,0,0,0,1,
AALBORG ,2,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,
AALBORGS ,2,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,
AALE ,2,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
AALEN ,2,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
AALEN ,2,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
AALEND ,2,0,0,1,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
AALENDE ,2,0,0,1,2,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
AALENDEM ,2,0,0,1,2,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,
AALENDEN ,2,0,0,1,2,0,0,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,
AALENDER ,2,0,0,1,2,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,
AALENDES ,2,0,0,1,2,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,
AALENER ,2,0,0,0,2,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,
AALENS ,2,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,
AALENTNAHME ,3,0,0,0,2,0,0,1,0,0,0,1,1,2,0,0,0,0,0,1,0,0,0,0,0,0,
AALENTNAHMEN ,3,0,0,0,2,0,0,1,0,0,0,1,1,3,0,0,0,0,0,1,0,0,0,0,0,0,
AALES ,2,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
AALFANG ,3,0,0,0,0,1,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
AALFäNGE ,2,0,0,0,1,1,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
AALFANGERGEBNIS ,3,1,0,0,2,1,2,0,1,0,0,1,0,2,0,0,0,1,1,0,0,0,0,0,0,0,
AALFANGERGEBNISSE ,3,1,0,0,3,1,2,0,1,0,0,1,0,2,0,0,0,1,2,0,0,0,0,0,0,0,
AALFANGERGEBNISSEN ,3,1,0,0,3,1,2,0,1,0,0,1,0,3,0,0,0,1,2,0,0,0,0,0,0,0,
AALFANGERGEBNISSES ,3,1,0,0,3,1,2,0,1,0,0,1,0,2,0,0,0,1,3,0,0,0,0,0,0,0,
AALFANGS ,3,0,0,0,0,1,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,
AALFANGVERBOT ,3,1,0,0,1,1,1,0,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,0,0,0,
AALFANGVERBOTE ,3,1,0,0,2,1,1,0,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,0,0,0,
AALFANGVERBOTEN ,3,1,0,0,2,1,1,0,0,0,0,1,0,2,1,0,0,1,0,1,0,1,0,0,0,0,
AALFANGVERBOTES ,3,1,0,0,2,1,1,0,0,0,0,1,0,1,1,0,0,1,1,1,0,1,0,0,0,0,
AALFANGVERBOTS ,3,1,0,0,1,1,1,0,0,0,0,1,0,1,1,0,0,1,1,1,0,1,0,0,0,0,
AALFISCHER ,2,0,1,0,1,1,0,1,1,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,
AALFISCHEREI ,2,0,1,0,2,1,0,1,2,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,
AALFISCHERIN ,2,0,1,0,1,1,0,1,2,0,0,1,0,1,0,0,0,1,1,0,0,0,0,0,0,0,
AALFISCHERINNEN ,2,0,1,0,2,1,0,1,2,0,0,1,0,3,0,0,0,1,1,0,0,0,0,0,0,0,
AALFISCHERN ,2,0,1,0,1,1,0,1,1,0,0,1,0,1,0,0,0,1,1,0,0,0,0,0,0,0,
AALFISCHERS ,2,0,1,0,1,1,0,1,1,0,0,1,0,0,0,0,0,1,2,0,0,0,0,0,0,0,
AALFöRMIG ,2,0,0,0,0,1,1,0,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,
AALFöRMIGE ,2,0,0,0,1,1,1,0,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,
AALFöRMIGEM ,2,0,0,0,1,1,1,0,1,0,0,1,2,0,0,0,0,1,0,0,0,0,0,0,0,0,
AALFöRMIGEN ,2,0,0,0,1,1,1,0,1,0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,
AALFöRMIGER ,2,0,0,0,1,1,1,0,1,0,0,1,1,0,0,0,0,2,0,0,0,0,0,0,0,0,
AALFöRMIGES ,2,0,0,0,1,1,1,0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,
AALFREUND ,2,0,0,1,1,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,
AALFREUNDE ,2,0,0,1,2,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,
AALFREUNDEN ,2,0,0,1,2,1,0,0,0,0,0,1,0,2,0,0,0,1,0,0,1,0,0,0,0,0,
AALFREUNDES ,2,0,0,1,2,1,0,0,0,0,0,1,0,1,0,0,0,1,1,0,1,0,0,0,0,0,
AALFREUNDIN ,2,0,0,1,1,1,0,0,1,0,0,1,0,2,0,0,0,1,0,0,1,0,0,0,0,0,
AALFREUNDINNEN ,2,0,0,1,2,1,0,0,1,0,0,1,0,4,0,0,0,1,0,0,1,0,0,0,0,0,
AALGLATT ,3,0,0,0,0,0,1,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,
AALGLATTE ,3,0,0,0,1,0,1,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,
AALGLATTEM ,3,0,0,0,1,0,1,0,0,0,0,2,1,0,0,0,0,0,0,2,0,0,0,0,0,0,
AALGLATTEN ,3,0,0,0,1,0,1,0,0,0,0,2,0,1,0,0,0,0,0,2,0,0,0,0,0,0,
AALGLATTER ,3,0,0,0,1,0,1,0,0,0,0,2,0,0,0,0,0,1,0,2,0,0,0,0,0,0,
AALGLATTES ,3,0,0,0,1,0,1,0,0,0,0,2,0,0,0,0,0,0,1,2,0,0,0,0,0,0,
AALKäSTCHEN ,2,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,
AALKäSTCHENS ,2,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,0,0,2,1,0,0,0,0,0,0,
AALKASTEN ,3,0,0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,
AALKäSTEN ,2,0,0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,
AALKASTENS ,3,0,0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,0,2,1,0,0,0,0,0,0,
AALKISTE ,2,0,0,0,1,0,0,0,1,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,
AALKISTEN ,2,0,0,0,1,0,0,0,1,0,1,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,
AALKORB ,2,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,
AALKöRBCHEN ,2,1,1,0,1,0,0,1,0,0,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,
AALKöRBCHENS ,2,1,1,0,1,0,0,1,0,0,1,1,0,1,0,0,0,1,1,0,0,0,0,0,0,0,
AALKöRBE ,2,1,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
AALKöRBEN ,2,1,0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,
AALKORBS ,2,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,
AALMOLCH ,2,0,1,0,0,0,0,1,0,0,0,2,1,0,1,0,0,0,0,0,0,0,0,0,0,0,
AALMOLCHE ,2,0,1,0,1,0,0,1,0,0,0,2,1,0,1,0,0,0,0,0,0,0,0,0,0,0,

Das Skript braucht 1.08 Sekunden für 10000 Wörter. Daraus folgt:
1.08 sek für 10000
0.000108 sek für 1
1695825*.000108=183.1491~=184 sek für alle zur Umwandlung.
 
Das sind ja schon mal 3 Minuten, die du bei einem regulären Durchlauf sparst. Wie lange braucht dein Suchskript denn jetzt?
 
Die 115049KB Datei wurde in 213.7046649456 Sekunden generiert. Leider erfolgen Zeilenumbrüche nach dem Wort:
Code:
AACHEN
,2,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,AACHENER
,2,0,1,0,2,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,AACHENERIN
,2,0,1,0,2,0,0,1,1,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,AACHENERINNEN
,2,0,1,0,3,0,0,1,1,0,0,0,0,4,0,0,0,1,0,0,0,0,0,0,0,0,AACHENERN
,2,0,1,0,2,0,0,1,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,AACHENERS
,2,0,1,0,2,0,0,1,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,AACHENS
,2,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,AAL
,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,AALäHNLICH
,2,0,1,0,0,0,0,2,1,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,AALäHNLICHE
,2,0,1,0,1,0,0,2,1,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,AALäHNLICHEM
,2,0,1,0,1,0,0,2,1,0,0,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,AALäHNLICHEN
,2,0,1,0,1,0,0,2,1,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,AALäHNLICHER
,2,0,1,0,1,0,0,2,1,0,0,2,0,1,0,0,0,1,0,0,0,0,0,0,0,0,AALäHNLICHES
,2,0,1,0,1,0,0,2,1,0,0,2,0,1,0,0,0,0,1,0,0,0,0,0,0,0,AALANGELFISCHEREI
,3,0,1,0,3,1,1,1,2,0,0,2,0,1,0,0,0,1,1,0,0,0,0,0,0,0,AALANGELN
Leider habe ich keine Ahnung warum. Mein verwendeter Code:
PHP:
<h1>Erstelle Datei</h1>
<?php
$start = microtime(true);
$wortarray=0;

function wort2buchstaben($eingabewort){
	$buchstabenarray=Array();
	for($i=0;$i<26;$i++){
		$buchstabenarray[$i]=0;
	}
	for($i=0;$i<strlen($eingabewort);$i++){
		$xyz=ord($eingabewort[$i])-65;
		if($xyz>-1&&$xyz<66){
			$buchstabenarray[$xyz]++;
		}
	}
	return $buchstabenarray;
}

$handle=fopen('german.dic','r');
$cnt=0;
$str="";
while (!feof($handle)) {
	$buffer = strtoupper(fgets($handle));
	$str.= $buffer;
	$str.= ",";
	$a=wort2buchstaben ($buffer);
	for($cis=0;$cis<26;$cis++){
		$str.= $a[$cis].",";
	}
	$cnt++;
	if($cnt>1695825){
		break;
	}
}
fclose($handle);

$end = microtime(true);
 
$laufzeit = $end - $start;
echo "Laufzeit: ".$laufzeit." Sekunden!";

$handle=fopen('german2.dic','w+');
fputs($handle,$str);
fclose($handle);
?>
Bei Ausgabe von $str kommt das folgende bei raus:
Code:
AACHEN ,2,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,AACHENER ,2,0,1,0,2,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,AACHENERIN ,2,0,1,0,2,0,0,1,1,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,AACHENERINNEN ,2,0,1,0,3,0,0,1,1,0,0,0,0,4,0,0,0,1,0,0,0,0,0,0,0,0,AACHENERN ,2,0,1,0,2,0,0,1,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,AACHENERS ,2,0,1,0,2,0,0,1,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,AACHENS ,2,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,AAL ,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,AALäHNLICH ,2,0,1,0,0,0,0,2,1,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,AALäHNLICHE ,2,0,1,0,1,0,0,2,1,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,AALäHNLICHEM ,2,0,1,0,1,0,0,2,1,0,0,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,AALäHNLICHEN ,2,0,1,0,1,0,0,2,1,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,AALäHNLICHER ,2,0,1,0,1,0,0,2,1,0,0,2,0,1,0,0,0,1,0,0,0,0,0,0,0,0,AALäHNLICHES ,2,0,1,0,1,0,0,2,1,0,0,2,0,1,0,0,0,0,1,0,0,0,0,0,0,0,AALANGELFISCHEREI ,3,0,1,0,3,1,1,1,2,0,0,2,0,1,0,0,0,1,1,0,0,0,0,0,0,0,AALANGELN ,3,0,0,0,1,0,1,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,AALANGELNS ,3,0,0,0,1,0,1,0,0,0,0,2,0,2,0,0,0,0,1,0,0,0,0,0,0,0,AALARTIG ,3,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,AALARTIGE ,3,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,AALARTIGEM ,3,0,0,0,1,0,1,0,1,0,0,1,1,0,0,0,0,1,0,1,0,0,0,0,0,0,AALARTIGEN ,3,0,0,0,1,0,1,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,AALARTIGER ,3,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,2,0,1,0,0,0,0,0,0,AALARTIGES ,3,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,AALBESTAND ,3,1,0,1,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,AALBESTäNDE ,2,1,0,1,2,0,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,AALBESTäNDEN ,2,1,0,1,2,0,0,0,0,0,0,1,0,2,0,0,0,0,1,1,0,0,0,0,0,0,AALBESTANDES ,3,1,0,1,2,0,0,0,0,0,0,1,0,1,0,0,0,0,2,1,0,0,0,0,0,0,AALBESTANDS ,3,1,0,1,1,0,0,0,0,0,0,1,0,1,0,0,0,0,2,1,0,0,0,0,0,0,AALBEZOGEN ,2,1,0,0,2,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,1,AALBEZOGENE ,2,1,0,0,3,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,1,AALBEZOGENEM ,2,1,0,0,3,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,AALBEZOGENEN ,2,1,0,0,3,0,1,0,0,0,0,1,0,2,1,0,0,0,0,0,0,0,0,0,0,1,AALBEZOGENER ,2,1,0,0,3,0,1,0,0,0,0,1,0,1,1,0,0,1,0,0,0,0,0,0,0,1,AALBEZOGENES ,2,1,0,0,3,0,1,0,0,0,0,1,0,1,1,0,0,0,1,0,0,0,0,0,0,1,AALBORG ,2,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,AALBORGS ,2,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,AALE ,2,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,AALEN ,2,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,AALEN ,2,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,AALEND ,2,0,0,1,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,AALENDE ,2,0,0,1,2,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,AALENDEM ,2,0,0,1,2,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,AALENDEN ,2,0,0,1,2,0,0,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,AALENDER ,2,0,0,1,2,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,AALENDES ,2,0,0,1,2,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,AALENER ,2,0,0,0,2,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,AALENS ,2,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,AALENTNAHME ,3,0,0,0,2,0,0,1,0,0,0,1,1,2,0,0,0,0,0,1,0,0,0,0,0,0,AALENTNAHMEN ,3,0,0,0,2,0,0,1,0,0,0,1,1,3,0,0,0,0,0,1,0,0,0,0,0,0,AALES ,2,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,AALFANG ,3,0,0,0,0,1,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,AALFäNGE ,2,0,0,0,1,1,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,AALFANGERGEBNIS ,3,1,0,0,2,1,2,0,1,0,0,1,0,2,0,0,0,1,1,0,0,0,0,0,0,0,AALFANGERGEBNISSE ,3,1,0,0,3,1,2,0,1,0,0,1,0,2,0,0,0,1,2,0,0,0,0,0,0,0,AALFANGERGEBNISSEN ,3,1,0,0,3,1,2,0,1,0,0,1,0,3,0,0,0,1,2,0,0,0,0,0,0,0,AALFANGERGEBNISSES ,3,1,0,0,3,1,2,0,1,0,0,1,0,2,0,0,0,1,3,0,0,0,0,0,0,0,AALFANGS ,3,0,0,0,0,1,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,AALFANGVERBOT ,3,1,0,0,1,1,1,0,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,0,0,0,AALFANGVERBOTE ,3,1,0,0,2,1,1,0,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,0,0,0,AALFANGVERBOTEN ,3,1,0,0,2,1,1,0,0,0,0,1,0,2,1,0,0,1,0,1,0,1,0,0,0,0,AALFANGVERBOTES ,3,1,0,0,2,1,1,0,0,0,0,1,0,1,1,0,0,1,1,1,0,1,0,0,0,0,AALFANGVERBOTS ,3,1,0,0,1,1,1,0,0,0,0,1,0,1,1,0,0,1,1,1,0,1,0,0,0,0,AALFISCHER ,2,0,1,0,1,1,0,1,1,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,AALFISCHEREI ,2,0,1,0,2,1,0,1,2,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,AALFISCHERIN ,2,0,1,0,1,1,0,1,2,0,0,1,0,1,0,0,0,1,1,0,0,0,0,0,0,0,AALFISCHERINNEN ,2,0,1,0,2,1,0,1,2,0,0,1,0,3,0,0,0,1,1,0,0,0,0,0,0,0,AALFISCHERN ,2,0,1,0,1,1,0,1,1,0,0,1,0,1,0,0,0,1,1,0,0,0,0,0,0,0,AALFISCHERS ,2,0,1,0,1,1,0,1,1,0,0,1,0,0,0,0,0,1,2,0,0,0,0,0,0,0,AALFöRMIG ,2,0,0,0,0,1,1,0,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,AALFöRMIGE ,2,0,0,0,1,1,1,0,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,AALFöRMIGEM ,2,0,0,0,1,1,1,0,1,0,0,1,2,0,0,0,0,1,0,0,0,0,0,0,0,0,AALFöRMIGEN ,2,0,0,0,1,1,1,0,1,0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,AALFöRMIGER ,2,0,0,0,1,1,1,0,1,0,0,1,1,0,0,0,0,2,0,0,0,0,0,0,0,0,AALFöRMIGES ,2,0,0,0,1,1,1,0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,AALFREUND ,2,0,0,1,1,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,AALFREUNDE ,2,0,0,1,2,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,AALFREUNDEN ,2,0,0,1,2,1,0,0,0,0,0,1,0,2,0,0,0,1,0,0,1,0,0,0,0,0,AALFREUNDES ,2,0,0,1,2,1,0,0,0,0,0,1,0,1,0,0,0,1,1,0,1,0,0,0,0,0,AALFREUNDIN ,2,0,0,1,1,1,0,0,1,0,0,1,0,2,0,0,0,1,0,0,1,0,0,0,0,0,AALFREUNDINNEN ,2,0,0,1,2,1,0,0,1,0,0,1,0,4,0,0,0,1,0,0,1,0,0,0,0,0,AALGLATT ,3,0,0,0,0,0,1,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,AALGLATTE ,3,0,0,0,1,0,1,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,AALGLATTEM ,3,0,0,0,1,0,1,0,0,0,0,2,1,0,0,0,0,0,0,2,0,0,0,0,0,0,AALGLATTEN ,3,0,0,0,1,0,1,0,0,0,0,2,0,1,0,0,0,0,0,2,0,0,0,0,0,0,AALGLATTER u.s.w.
Die Zeilenumbrüche zerstören mein zeilenweises einlesen. Wodurch kommen die Zustande (normale Ausgabe von $str hat keine, nur die in die Datei geschriebene)?
 
fgets liefert eine Zeile inklusive dem Zeilenumbruch. Ich würde da einfach noch ein trim() herumpacken:$buffer = trim(strtoupper(fgets($handle)));
Außerdem solltest du nach der Zeichenanzahl einen Zeilenumbruch manuell einfügen. (Übrigens gibt es implode(), um Arrays in Strings umzuwandeln.)

normale Ausgabe von $str hat keine
Naja - das ist keine normale Ausgabe, sondern HTML. Und das behandelt im Standardmodus Zeilenumbrüche wie Leerzeichen.

PS: Dieses Skript würde wahrscheinlich schneller laufen, wenn du direkt beim Einlesen einer Zeile diese auch gleich wieder in die neue Datei reinschreiben würdest.
 
Deine Verbesserungsvorschläge habe ich eingebaut. Die Datei hat jetzt die folgende Form:
Code:
AACHEN,2,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
	AACHENER,2,0,1,0,2,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,
	AACHENERIN,2,0,1,0,2,0,0,1,1,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,
	AACHENERINNEN,2,0,1,0,3,0,0,1,1,0,0,0,0,4,0,0,0,1,0,0,0,0,0,0,0,0,
	AACHENERN,2,0,1,0,2,0,0,1,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,
	AACHENERS,2,0,1,0,2,0,0,1,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,
	AACHENS,2,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,
	AAL,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	AALäHNLICH,2,0,1,0,0,0,0,2,1,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
	AALäHNLICHE,2,0,1,0,1,0,0,2,1,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
	AALäHNLICHEM,2,0,1,0,1,0,0,2,1,0,0,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,
	AALäHNLICHEN,2,0,1,0,1,0,0,2,1,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,
	AALäHNLICHER,2,0,1,0,1,0,0,2,1,0,0,2,0,1,0,0,0,1,0,0,0,0,0,0,0,0,
	AALäHNLICHES,2,0,1,0,1,0,0,2,1,0,0,2,0,1,0,0,0,0,1,0,0,0,0,0,0,0,
	AALANGELFISCHEREI,3,0,1,0,3,1,1,1,2,0,0,2,0,1,0,0,0,1,1,0,0,0,0,0,0,0,
	AALANGELN,3,0,0,0,1,0,1,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,
	AALANGELNS,3,0,0,0,1,0,1,0,0,0,0,2,0,2,0,0,0,0,1,0,0,0,0,0,0,0,
	AALARTIG,3,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,
	AALARTIGE,3,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,
	AALARTIGEM,3,0,0,0,1,0,1,0,1,0,0,1,1,0,0,0,0,1,0,1,0,0,0,0,0,0,
	AALARTIGEN,3,0,0,0,1,0,1,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,
	AALARTIGER,3,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,2,0,1,0,0,0,0,0,0,
	AALARTIGES,3,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,
	AALBESTAND,3,1,0,1,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,
	AALBESTäNDE,2,1,0,1,2,0,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,
	AALBESTäNDEN,2,1,0,1,2,0,0,0,0,0,0,1,0,2,0,0,0,0,1,1,0,0,0,0,0,0,
	AALBESTANDES,3,1,0,1,2,0,0,0,0,0,0,1,0,1,0,0,0,0,2,1,0,0,0,0,0,0,
	AALBESTANDS,3,1,0,1,1,0,0,0,0,0,0,1,0,1,0,0,0,0,2,1,0,0,0,0,0,0,
	AALBEZOGEN,2,1,0,0,2,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,1,
	AALBEZOGENE,2,1,0,0,3,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,1,
	AALBEZOGENEM,2,1,0,0,3,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,
	AALBEZOGENEN,2,1,0,0,3,0,1,0,0,0,0,1,0,2,1,0,0,0,0,0,0,0,0,0,0,1,
	AALBEZOGENER,2,1,0,0,3,0,1,0,0,0,0,1,0,1,1,0,0,1,0,0,0,0,0,0,0,1,
	AALBEZOGENES,2,1,0,0,3,0,1,0,0,0,0,1,0,1,1,0,0,0,1,0,0,0,0,0,0,1,
	AALBORG,2,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,
	AALBORGS,2,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,
	AALE,2,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	AALEN,2,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
Das Programm braucht jetzt für 1/100 der Wörter 6.37 Sekunden, für alle also 637 Sekunden=10 Minuten. Was eine Verschlechterung darstellt.
 
Woher kommen denn jetzt die Tabulatoren am Anfang jeder Zeile?

Das Programm braucht jetzt für 1/100 der Wörter 6.37 Sekunden, für alle also 637 Sekunden=10 Minuten. Was eine Verschlechterung darstellt.
War ja nur eine Idee... anscheinend sind auf deiner Maschine die IO-Operationen recht langsam.

Wie sieht das Skript denn jetzt genau aus?
 
Zu den Tabulatoren: Da habe ich keine Idee, die sind aber nicht störend, also wäre es Zeitverschewndung sie wegzumachen. Ginge aber ganz einfach mit der Ersetzen-Funktion in notepad++.
PHP:
<h1>Gefundene Wörter bei Suche nach <?php echo $_GET['wort']; ?></h1>
<?php
$start = microtime(true);
$wort=strtoupper($_GET['wort']);

function wort2buchstaben($eingabewort){
	$buchstabenarray=Array();
	for($i=0;$i<26;$i++){
		$buchstabenarray[$i]=0;
	}
	for($i=0;$i<strlen($eingabewort);$i++){
		$xyz=ord($eingabewort[$i])-65;
		if($xyz>-1&&$xyz<66){
			$buchstabenarray[$xyz]++;
		}
	}
	return $buchstabenarray;
}

function vergleiche ($woerterbuchwort,$woerterbuchwortarray){
	$uebereinstimmung=true;
	for($i=0;$i<26;$i++){
		if(wort2buchstaben($woerterbuchwort)[$i]<$woerterbuchwortarray[$i+1]){
			$uebereinstimmung=false;
			break;
		}
	}
	return $uebereinstimmung;
}

$handle=fopen('german2.dic','r');
$count=0;
while (!feof($handle)&&$count<16958) {
	$buffer = trim(strtoupper(fgets($handle)));
	$bArray = explode(",",$buffer);
	$wort = $bArray[0];
	$bArray[0]="";
	$imp = implode(",",$bArray);
	if(vergleiche($wort,$imp)){
		echo $wort."<br/>";
	}
	$count++;
}
fclose($handle);

$end = microtime(true);
 
$laufzeit = $end - $start;
echo "Laufzeit: ".$laufzeit." Sekunden!";
?>
$count ist nur testweise zur Wortbegrenzung drin, die Zeilen $count=0;, &&$count<16958 und $count++; können bei Normalbetrieb natürlich weg.
 
Das wundert mich jetzt nicht, dass dieses Skript langsamer läuft... du rufst ja jetzt wort2buchstaben für jedes Wort in der .dic-Datei 26 mal auf. Also noch öfter als vorher... eigentlich musst du die Funktion ja nur ein einziges mal aufrufen - nämlich ganz am Anfang des Skriptes mit dem eingegebenen Wort. Für alle anderen Wörter ist die Information ja schon in der Datei.

Außerdem rufst du die Funktion vergleiche() gar nicht mit dem Suchwort auf, da du die Variable $wort ja die ganze Zeit überschreibst.

Zusätzlich ist der Einsatz von implode() hier falsch. vergleiche() erwartet als zweiten Parameter doch einen Array...

Das Ganze sollte also, meiner Meinung nach, so aussehen:
Code:
<h1>Gefundene Wörter bei Suche nach <?php echo $_GET['wort']; ?></h1>
<?php
$start = microtime(true);

function wort2buchstaben($eingabewort){
    $buchstabenarray=Array();
    for($i=0;$i<26;$i++){
        $buchstabenarray[$i]=0;
    }
    for($i=0;$i<strlen($eingabewort);$i++){
        $xyz=ord($eingabewort[$i])-65;
        if($xyz>-1&&$xyz<66){
            $buchstabenarray[$xyz]++;
        }
    }
    return $buchstabenarray;
}

function vergleiche ($ressourceArray, $checkArray){
    for ($i = 0; $i < 26; $i += 1){
        if ($ressourceArray[$i] < (int) $checkArray[$i]){
			return false;
        }
    }
    return true;
}

$wort = strtoupper($_GET['wort']);
$wortArray = wort2buchstaben($wort);

$handle=fopen('german2.dic','r');
$count=0;
while (!feof($handle) && $count < 16958) {
    $buffer = trim(strtoupper(fgets($handle)));
	list($checkWord, $counts) = explode(",", $buffer, 2);
	$checkArray = explode(",", $counts);
    if (vergleiche($wortArray, $checkArray)){
        echo $checkWort."<br/>";
    }
    $count++;
}
fclose($handle);

$end = microtime(true);
 
$laufzeit = $end - $start;
echo "Laufzeit: ".$laufzeit." Sekunden!";
?>
- ungetestet.

PS: mit der Funktion count_chars() könntest du deine wort2buchstaben() beschleunigen, aber da die ja im Normalbetrieb nur einmal aufgerufen werden muss, wird das nicht viel ausmachen.
 
"ungetestet" - leider.

Testsuche nach "Haifischflosse". Es kam 528x diese Fehlermeldung raus (mit 45 Sekunden Laufzeit :) und $count rausgemacht), und kein Wort:
Code:
( ! ) Notice: Undefined variable: checkWort in C:\wamp\www\WortSuche\wortsuche2.php on line 38
Call Stack
#	Time	Memory	Function	Location
1	0.0008	151768	{main}( )	..\wortsuche2.php:0
Hä?
 
Ups... die Variable heißt natürlich $checkWord... die Zeile echo $checkWort."<br/>"; muss dann natürlich echo $checkWord."<br/>"; heißen.
 
Das ist doch schon mal ein Fortschritt.

Wenn du jetzt noch Umlaute und das scharfe S mit betrachten willst, musst du deine Vergleichsarrays auf Länge 30 verlängern und diese vier zusätzlichen Buchstaben in der wort2buchstaben zusätzlich betrachten. Das Deutsche hat hald eigentlich 30 Buchstaben und nicht 26...
 
Wenn du jetzt noch Umlaute und das scharfe S mit betrachten willst, musst du deine Vergleichsarrays auf Länge 30 verlängern und diese vier zusätzlichen Buchstaben in der wort2buchstaben zusätzlich betrachten. Das Deutsche hat hald eigentlich 30 Buchstaben und nicht 26...

Noch einfacher wäre es, diese im Wörterbuch als ae, ue, oe und ss zu schreiben (was sogar dem Anwendungszweck besser entspricht).
 
Zurück
Oben