Hallo,
der Hinweis mit print_r war gut und wichtig. Das eigentliche Problem war so leichter zu erkennen. Die obere Schleife schrieb nicht alles in einem Array, sondern jeden Referrer in einem eigenen Array, der jedes mal wieder mit array(1) { [0]=> string(Zahl) begann. So konnte in der unteren Schleife nur ein Referrer erfasst werden. Diese abgeänderte Schleife schreibt nun alle Referrer in einen Array, der mit Hilfe der unteren Schleife ausgezählt und sortiert wird. Erfasst werden wohl alle Sumas die ein q= oder ein p= enthalten, sowie als Kriterium fürs Muster "search". Eine Probe steht allerdings noch aus, da z.B. in MS noch nicht auffindbar. Anzumerken bleibt, dass q= nicht ausgelesen wurde, wenn im Referrer zwischen ? und q= nicht mindestens ein Buchstabe und ein & vorkommen. p= wurde erst nicht ausgelesen, nachdem nun p%3D zu q= gewandelt wird und das Fragezeichen einen Anhang erhält ?xx&, wird bisher alles sauber ausgelesen. Das jetzige Problem besteht besteht noch darin, das encode oder decode, gleich ob bei URL oder UTF-8, ohne Reaktion bleibt. Die Abspeicherung in die TXT ist unsauber, zumindest kommt es in den Referrern vor, dass ein Teil nicht kodiert ist, ein Teil UTF-8 kodiert und ein Teil wohl doppelt kodiert ist, wie dieses kleine ü hier %25C3%25BC zeigt. Nur da will ich mal sehen in wie weit sich da mit der Abspeicherung etwas verbessern lässt. Will auch noch einmal probieren, ob das bei anderen Hostern genauso aussieht oder ob da eine andere Abspeicherung erfolgt und die Angaben bei str_replace eventuell anders aussehen könnten. Doch das sind ja eher alles kleinere Problemchen, die so nach und nach verbessert werden können. So wie es jetzt ist, haut es zumindest erst einmal hin. Erst einmal meinen Dank an dieser Stelle.
Gruß Mele
|
PHP Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
<?php
$muster = "/search/i"; // Suchmuster
$datei = fopen('refdatei.txt','r');
while(!feof($datei)) {
$zeile = fgets($datei, 10000); // Wieviel?
if(preg_match($muster, $zeile)){
$suchenr = array('q%3D','p%3D','%26','%3F','%3B','%25','%3D','+','%3A');
$ersetze = array('q=','q=','&','?xx&','xx&',' ','=',' ',':');
$refdata = str_replace($suchenr,$ersetze,$zeile);
parse_str($refdata);
$weiter = preg_replace("/[xx]/", " ", $woher);
$alpha[] = $q;} // Bei Sumas $q durch $weiter ersetzen.
}
$zaehle = array_count_values($alpha);
arsort($zaehle);
while (list($KWs, $zahl) = each($zaehle))
{
echo $KWs. "--> <b>".$zahl."</b><br>\n";
}
?>
|