Seite 1 von 1

Per php eine zeile einer html seite auslesen?

Verfasst: Sa 25.Aug, 2007 09:12
von mcfly
Hallo an alle.

Ich hätte damal eine Frage. HEHE sonst würd ich ja auch kein Thema aufmachen *g* !

Also ich möchte auf einer meiner Seite verschiedene Angebote der Firma zeigen bei der ich angestellt bin. Nun ist es so eigentlich nicht schwer allerdings ändert mein Chefe diese willkürlich (Datum und Zeitmäßig) zwischen 4 Verschiedenen Angeboten. Meiner Idee und Hoffnung war nun ob es möglich ist die angebotszeile per php auslesen zulassen und dementsprechend sofort das aktuelle angebot anzeigen zu lassen.

Also wenn zum beispiel dort eine 1 oder ein A steht das erste Angebot

wenn ne 2 oder ein B das zweite Angebot

und soweiter.

Bisher habe ich leider nur diesen Ansatz


<?php

$content = file_get_contents("inhalt_mit_links.html");

?>

Aber wie kann ich da nun die eine Zeile rausfiltern?

Wäre schön wenn ihr mir helfen könntet

Verfasst: Sa 25.Aug, 2007 12:25
von oxpus
Nun ja, Du must bedenken, daß file_get_contents(); die Seite in einen String ausliest. Der kann dann schon mal "explodieren".

Nimm besser stattdessen file();, dann wird jede Zeile in ein Array gelesen, welches man dann bequem auseinander nehmen kann (also $variable[0] wäre die erste, $variable[1] die zweite Zeile, etc...).

Verfasst: Sa 25.Aug, 2007 12:43
von mcfly
Also würde das im enteffekt so aussehen?

<?php

$content = file("inhalt_mit_links.html");

if($variable[0]==Update 1 möglich)

else

?>


oder mach ich da nun was falsch?


Sorry meine php-kenntnisse sind noch nichtmal ausreichend bin aber am lernen.

Verfasst: Sa 25.Aug, 2007 13:09
von oxpus
Wenn, dann musst Du schon wissen, in welche Zeile was steht.
Lass Dir doch einfach den Inhalt von $content erst einmal anzeigen:

Code: Alles auswählen

echo print_r ($content);
Dann kannst Du sehen, in welcher $content[...] die gewünschten Inhalte stehen.
Und wenn eh immer in der selben Zeile die Daten enthalten sind, kann man das dann auch fest verdrahten und letzlich nur gleich mit

Code: Alles auswählen

echo $content[x];
das gewünschte anzeigen lassen...

Verfasst: Sa 25.Aug, 2007 15:31
von mcfly
ja also die zeile weiß ich ja aber ich möchte diese nicht angzeigt bekommen ich wollte, da es vier verschiedene Zeilenmöglichkeiten sind diese nun per if else abfrage dann weiterverwenden. Ist der Teil dann richtig?


Edit:

Also ich habe nun zwei verschiedene Arten versucht mit if else und mit switch aber irgendwas fehlt mir nunn das ich nicht weiterkomme. Es bleibt eine weiße seite

Code: Alles auswählen

<?php

$content = file("die zu ursprungsseite seite");

    if ("Level ist 1" == $content[29]) {
        echo "Die Daten wurden gelöscht";
    }
    if ("Level ist 2" == $content[29]) {
        echo "Die Daten wurden gespeichert";
    }
    if ("Level ist 3" == $content[29]) {
        echo "Die Daten wurden hinzugefügt";
    }

?>

bleibt jedes mal eine weiße seite ohne fehler

Code: Alles auswählen

<?php

$content = file("die zu ursprungsseite seite");

 switch ($content[29]) { 
 case 'Level ist 1':
		echo print_r ($content);
 case 'Level ist 2': 
		echo $content[29];	
 } 

?>
ebenfalls fehlerlose weiße seite

Verfasst: Sa 25.Aug, 2007 19:28
von oxpus
Moment, langsam.

In den "bekannten" Zeilen stehen Werte, die Du auslesen und weiterverwenden willst, also gleich in einem Script ohne weitere Anzeigen?

Ist dann der Text immer gleich?
Dann könnte man ihn einfach abschneiden, also

Code: Alles auswählen

$wert = substr($content[29], $pos, $len);
wobei $pos die Position der Zahl im Text ist (-1) und $len die Länge des Wertes.
Man kann auch hier großzügiger mit der Länge sein, denn mit

Code: Alles auswählen

$wert = intval($wert);
wird der Text dahinter eh abgeschnitten.

Hilft das oder bin ich nun komplett auf der falschen Spur?
Bislang kamen da zu wenige Infos, um gezielter helfen zu können (ich kenne z. B. die Seite überhaupt nicht)...

Verfasst: Sa 25.Aug, 2007 20:52
von mcfly
Also die Zeile 29 beim auslesen gibt es in vier verschiedenen Varianten nach welcher ich nun meine eigene Seite kreieren möchte. Angezeigt soll die Zeile nicht werden.

Ich kriege es ja hin das die Zeile angezeigt wird nur weiß ich nun nicht wie ich sie zwar lesen kann von der anderen Seite aber anstelle die nun anzeigen zu lassen soll entweder per if oder switch entsprechend sich nun meine Seite aufbauen.

Online sind beide Seiten noch nicht offiziell da dieser Abschnitt einer der wichtigsten ist um die Seiten fertig zu stellen.

Verfasst: So 26.Aug, 2007 00:45
von oxpus
Du sprichtst weiterhin in Rätzeln.
Ist denn in der besagten Zeile der gewünschte Inhalt nun immer nach einem bestimmten Text, immer an einer bestimmten Stelle oder wie soll man den nun finden?

Verfasst: So 26.Aug, 2007 02:19
von mcfly
Also gut ich hoffe nun ist wird es verständlicher.

Ich habe nun webseite 1

auf dieser Seite ist die Zeile 29 die sich verändert zwischen vier verschiedenen Texten

Level ist 1
Level ist 2
Level ist 3
Level ist 4

diese Zeile würde ich gerne einlesen

nun soll dann bei

"Level ist 1" eine andere seite generiert werden als bei "Level ist 2"

das einlesen der ganzen Seite ist ja nun schon vorhanden

und den unterschied zwischen den einzelnen aussehen und funktionen wollte ich nun entweder durch eine if else schleife machen oder mit switch aber bei beidem scheint trotzdem was zu fehlen da ich mit dem eingelesenen text nicht weiterarbeiten kann. Anzeigen geht auch die einzelne zeile um die es geht aber wie mache ich das nun per php das der text nicht angezeigt wird sondern das ich diese zeile als ursprung für die if else oder switch befehle nehme. Da fehlt irgendwas da so wie oben beschrieben ich nun leere seiten kriege.


Hoffe das war nun etwas besser erklärt was ich für ein Problem habe

Verfasst: So 26.Aug, 2007 02:36
von AmigaLink

Code: Alles auswählen

if (strpos($content[29], 'Level ist 1') != FALSE)
{
	...
}
else if (strpos($content[29], 'Level ist 2') != FALSE)
{
	...
}
else if (strpos($content[29], 'Level ist 3') != FALSE)
{
	...
}
else if (strpos($content[29], 'Level ist 4') != FALSE)
{
	...
}
else
{
	echo 'Das Level konnte nicht Ermittelt werden.';
}

Verfasst: So 26.Aug, 2007 09:23
von Giga4000
AmigaLink, dein Code ist so nicht ganz richtig ;)

Die Funktion strpos gibt die Position des Strings wieder der gefunden wurde. Steht dieser an erster Stelle, so wird 0 zurückgegeben - was bei deinem Code mit false gewertet wird. Der richtige Code lautet so:

Code: Alles auswählen

if (strpos($content[29], 'Level ist 1') !== false)
{
	...
}
Hiermit wird bei der Rückgabe auf gleiche Inhalte und gleiche Variablen-Typen geachtet!

Verfasst: So 26.Aug, 2007 09:44
von mcfly
Danke schön funktioniert wunderbar und alles so wie ichs mir auch vorgstellt hatte. Nochmals vielen Dank an euch hier

Verfasst: So 26.Aug, 2007 10:31
von oxpus
Theoretisch würde das so auch klappen:

Code: Alles auswählen

if (strpos($content[29], 'Level ist 1'))
aber der false-Vergleich ist sichererer.

Verfasst: So 26.Aug, 2007 12:03
von AmigaLink
@ Giga
Ich habe das zweite = nur Vergessen. :!: Geplant war es. Wenn ich es nicht geplant hätte, dann hätte ich den Code so angegeben wie es oxpus nun getan hat. ;)

Verfasst: So 26.Aug, 2007 12:13
von Giga4000
Hehe, dann ist ja gut :D

... hatte mit der Funktion nämlich auch schon meine Probleme, weil ich es so wie bei Oxpus angegeben geschrieben hatte.
Wiegesagt: der false-Vergleich ist auf jeden Fall sichererer!

Verfasst: So 26.Aug, 2007 12:21
von AmigaLink
Wiegesagt: der false-Vergleich ist auf jeden Fall sichererer!
Richtig. :)
Obwohl ein einfacher Vergleich ausreicht wenn man davon ausgehen kann, das der zu suchende Wert garantiert nicht an erster Stelle steht. ;)