php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.12.2004, 08:16  
Erfahrener Benutzer
 
Registriert seit: 08.08.2003
Beiträge: 111
Fraylman
Standard Datei auslesen ergibt ein Problem

Hallo Leute!

Hab ein kleines Prob bezüglich dem auslesen einer Datei! und zwar holt sich mein script die indexseite und liest auf dieser die links zu den unterberichten! diese öffnet er dann auch und liest die überschrift und den teaser aus! nun kommt aber das problem das er den text nicht ausliest und ich vermute es liegt daran das der text sich im html quellcode über zwei zeilen zieht! kann das sein? ich lese ja vorher zeilenweise aus!

gibt es da ne lösung für? wie geh ich da am besten vor?

greetz fraylman

Code:
<?


#####
$linkvorsatz = "http://www.test.de";
#####

$file = fopen ("http://www.test.de/test/test/index.html", "r");
if (!$file) 
{
    echo "

Datei konnte nicht geöffnet werden.

";
    exit;
}
$i = 1;
while (!feof ($file)) 
	{
		$line = fgets ($file, 4096);
		$gefunden = strstr($line, '/test/test/test/');
		$ergebnis = substr($gefunden,0,strpos($gefunden,'"'));
		
		if($ergebnis)
		{
			$unterlink = "$linkvorsatz$ergebnis";
			
			$file2 = fopen ("$unterlink", "r");
			if (!$file2) 
			{
   		 	/*echo "
Datei $unterlink konnte nicht geöffnet werden.
";*/
    		}
			else
			{
				while (!feof ($file2))
				{					
					$line_ul = fgets ($file2, 4096);
					
					#dient dazu die überschrift zu suchen
					$gefunden2 = strstr($line_ul, '<td bgcolor="#EB8B18" width="7"></td><td width="2"></td><td width="450" class="header1"><font color="#EB8B18">');
					$topic = substr($gefunden2,0,strpos($gefunden2,'</font></td></tr>'));
					$topic = strip_tags($topic);
					
					if($topic)
					{
						print "$topic

";
					}
					#####################################	
					
					# dient dazu den teaser zu suchen
					$gefunden3 = strstr($line_ul, '<td width="80%" colspan="3" class="small">');
					$teaser = substr($gefunden3,0,strpos($gefunden3,'</td>'));
					$teaser = strip_tags($teaser);
					if($teaser)
					{
						print "$teaser



";
					}
					#####################################					

					# dient dazu den text zu suchen
					$gefunden4 = strstr($line_ul, '<tr><td colspan="3">

');
					$text = substr($gefunden4,0,strpos($gefunden4,'</p> </td></tr>'));
					$text = strip_tags($text);
					if($text)
					{
						print "$text 



";
					}
					#####################################					

				}
				
			}
			
		}
		$i++;
	}

print "


$i

";
fclose($file);
?>
Fraylman ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.12.2004, 09:06  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

fgets liest per Definition nur zeilenweise. Eine mögliche Variante wäre, zuerst die komplette Datei einfach einzulesen und anschliessend erst die ganzen Sachen darin zu suchen.
mepeisen ist offline  
Alt 22.12.2004, 09:09  
Erfahrener Benutzer
 
Registriert seit: 08.08.2003
Beiträge: 111
Fraylman
Standard

hab irgendwas im kopf rumschwirren das man doch einfach die beiden zeilen irgendwie zusammenfügen kann und dann klappt das ja mit dem auslesen! oder irre ich mich da! (geht auf jeden mit c++). ansonsten muss ich ja alles wieder neu machen

greetz fraylman
Fraylman ist offline  
Alt 22.12.2004, 10:06  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

hmmmm. Dazu musste ich mir erstemal angucken, was du da überhaupt treibst und nicht nur überfliegen

Dazu muss die Logik etwas verändert werden. Diese Zeile:
Code:
$topic = substr($gefunden2,0,strpos($gefunden2,'</font></td></tr>'));
ist etwas blöd, weil du eben genau hier davon ausgehst, dass du es schon direkt kriegst. Du könntest genau an dieser Stelle alles so abwandeln, dass du erst prüfst, ob du denn das Ende </font> usw. schon bekommen hast. Wenn nein, nimmst du erst einmal alles mit und guckst dann eine Zeile weiter.

Würde dann etwa auf ungefähr folgendes hinauslaufen:
Code:
$topic = '';
$pos = strpos($gefunden2,'</font></td></tr>');
while ($pos === false && !feof($file2))
{
    $topic.=$gefunden2;
    $gefunden2 = fgets($file2, 4096);
}
if (!feof($file2))
{
    $topic.=substr($gefunden2,0,$pos);
}
Ansonsten noch zwei weitere Hinweise: Zum einen würde ich ncoh etwas mehr prüfen. Von C ausgehend ein "if ($topic)" zu machen, ist nett, aber bei PHP so nicht immer gut. Teste am besten wie in meinem Beispiel, ob strpos auch beim ersten Prüfen bereits false zurückliefert. (Mit drei Gleichheitszeichen, wichtig!!!). Und erst wenn du das einführende <TD usw. gefunden hast, solltest du weiter machen.

Der zweite Hinweis ist eher optional. Aber sei dir bewusst, dass du mit diesem Verfahren Probleme kriegst, falls du einmal mehr als 4096 Zeichen in einer Zeile hast und es zufällig einmal genau beim Suchstring (dem Beginn- Suchmuster oder End- Suchmuster) abgeschnitten wird.
mepeisen ist offline  
Alt 22.12.2004, 10:12  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Achja: Eines noch. Falls die Reihenfolge anders ist, zuerst Teaser und dann Überschrift meinetwegen, hast du auch ein Problem. Weil du dann bereits eventuell die mehrzeiligen Teaser eingelesen hast und in der Datei bereits zu weit gelesen hast. Wenn du dann in $line_ul noch was von den drei Sachen entdeckst, bist du gelackmeiert.
mepeisen ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datei auslesen Joerg80 PHP Tipps 2008 8 26.03.2008 22:18
Funktionen aus externer Datei includen - Problem Darson PHP Tipps 2008 7 18.01.2008 16:27
Komisches problem mit Datei Berechtigungen stuvomatic PHP Tipps 2006 5 28.05.2006 01:49
externe csv datei auslesen lord nacon PHP Tipps 2007 4 11.12.2005 22:56
Text datei. Zeugs auslesen dsmcg PHP Tipps 2007 38 30.11.2005 20:39
Text datei geordnet auslesen!! lindner PHP Tipps 2007 7 18.11.2005 09:52
CSV Datei rückwärts auslesen Schubi PHP Tipps 2005-2 16 12.09.2005 19:34
Bestimmte Werte aus cvs Datei auslesen PHP Tipps 2005-2 1 20.06.2005 13:11
Ordner Struktur auslesen bestimmte datei finden .... silverghost PHP Tipps 2005 3 24.05.2005 13:55
bestimmter abschnitt einer datei auslesen PHP Tipps 2004-2 1 08.12.2004 15:22
emailadressen aus einer Datei auslesen PHP Tipps 2004-2 25 30.11.2004 14:47
*.dat Datei auslesen von unten nach oben! CHRIS PHP Tipps 2004-2 12 30.11.2004 14:15
Auslesen von Teilen einer .txt Datei PHP Tipps 2004 4 20.09.2004 20:30
[Erledigt] Einzelne Werte aus TXT Datei auslesen und anzeigen. PHP Tipps 2004 1 08.09.2004 06:31
aus mysql db auslesen und in datei schreiben. Sclot PHP Tipps 2004 2 19.07.2004 21:56

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
skype dat dateien lesen, dat datei skype lesen 2010, komisches ende beim einlesen und ausgeben von datei c, dat datei skype, echo \$file2\; php inhalt lesen link ausgeben, php while strpos mehrere suchstring, php datei einlesen substr, skype dat auslesen, skype problem file:fclose.c, skype dat lesen, fgets und substr probleme, fscanf c mehrzeilige datei einlesen, c dat datei auslesen, strpos in datei, skype dat-dateien lesen, skype .dat lesen, dat dateien auslesen, fopen datei nicht gefunden, php datei einlesen feof if, skype .dat dateien lesbar machen

Alle Zeitangaben in WEZ +1. Es ist jetzt 15:16 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.