Noch so ein schreckliches Problem...

Feldhofe

Erfahrenes Mitglied
Hallo!

Ich hab schon wieder so ein schreckliches Problemchen mit Textdateien...und brauche irgendeine Idee!

Also:
Ich habe zwei Textdateien, chat_online.txt und chat_userliste.txt.

Ich will, dass chat_online.txt zeilenweise durchgearbeitet wird und bei jeder Zeile überprüft wird, ob der 1. Zeilenwert auch irgendwo in der Datei chat_userliste vorkommt.

Kommt er NICHT vor, soll die Zeile aus chat_online.txt gelöscht werden.

Ich hoffe, euch nicht allzusehr verwirrt zu haben... :)

Hier jedenfalls erstmal ein Code, den ich mir überlegt habe, wo aber irgendwie noch ein Denkfehler drin ist...

Gruß FH

PHP:
$datei = file("chat_online.txt");
$a=0;
while($a < $rows)
         {
         $bfile = explode("|",trim($afile[$a]));
         $user_online = $bfile[0];


         $datei = file("chat_userliste.txt");
         $open = fopen("chat_userliste.txt", "w+");

         for($i=0;$i < sizeof($datei); $i++)
                     {

                     // wenn Name nicht vorkommt
                        if (strpos($datei[$i], $user_online) === false)
                        $datei[$i] = trim($datei[$i]) . "|gelesen\n"; //ich lösche die Zeile noch nicht, sondern schreibe erstmal gelsen dahinter

                     fputs($open, $datei[$i]);

                     }
         fclose($open);
}
 
:)

Also einen kleinen fehler hab ich schonmal gefunden:

PHP:
$rows = filesize($datei);

Ich weiss nicht, ob es das war, aber ich drück dir die Daumen :)
 
das stimmt ... oben müsste unter das $a = 0; noch ein $rows = sizeof($datei); ob das mit filesize geht, weiß ich jetzt nicht. glaub eher nicht, da er ja die anzahl der elemente des arrays benötigt. dann ädnderest du noch diese passage:
PHP:
if (strpos($datei[$i], $user_online) === false)
 $datei[$i] = trim($datei[$i]) . "|gelesen\n"; 

fputs($open, $datei[$i]);
in folgende:
PHP:
if (strpos($datei[$i], $user_online) !== false)
fputs($open, $datei[$i]);


ich hoffe, dass ich das jetzt richtig verstanden hab :D versuchs einfach mal damit^^
 
Jaa...das geht soweit, danke!!

Was ich brauche: WIE durchsuche ich eine ganze Textdatei ("if irgendwo in Textdatei "wwwwww" vorkommt")????
(ganz eagl in welcher Zeile!)


Ich hab keine Ahnung!
 
if(preg_match("/www/", $deintext)) print "www kommt vor";

genau www ? www alleinstehend ? www zwischen andren zeichen ?...
 
In einer Textdatei (userliste.txt), wenn irgendwo der Wert der Variable $user vorkommt...

Gruß Feldhofe
 
für diese zwecke reicht eigentlich die str_pos() funktion.
folgendermaßen:
PHP:
$datei = file('userliste.txt');
$datei = implode(' ', $datei);
if (str_pos($datei, 'www') !== true) 
 echo "www kommt in der userlist.txt vor!";
 
Nein, das geht leider nicht!
Auch wenn www nicht vorkommt, wird immer "www kommt vor" ausgegeben!
Es muß auch strpos() heißen.

Hast du vielleicht noch einen anderen Tipp??

Gruß Feldhofe
 
probiers mal hiermit:
PHP:
function in_multi_array($needle, $haystack)
{
	$in_multi_array = false;
	if(in_array($needle, $haystack))
	{
		$in_multi_array = true;
	}
	else
	{
		for ($i = 0; $i < sizeof($haystack); $i++)
		{
			if(is_array($haystack[$i]))
			{
				if(in_multi_array($needle, $haystack[$i]))
				{
					$in_multi_array = true;
					break;
				}
			}
		}
	}
	return $in_multi_array;
}
___________________________________________________________
$fp = fopen("ip.log", "r");
while ($zeile = fgets($fp,2000))
    {
    	$ip[] = explode(",", $zeile);

    }
___________________________________________________________
//------ueberprüfen ob userip in ip.log vorkommt------
if(!in_multi_array($REMOTE_ADDR, $ip))
	{
		$saveip = fopen("ip.log","a");
		$data = "$REMOTE_ADDR, at $datum \n";
		fputs($saveip,$data);
		fclose($saveip);
	}

das is jetz n beispiel, ob ne ip schonmal vorgekommen ist, musst halt nur auf deine bedürfnisse umcoden ;)
---------

verdammt wieso will der immer smilies in den php code machen ?
 
Zurück