Seite 1 von 1

daten aus einer datei auslesen(externe url)

Verfasst: 20.12.2003 11:00
von Shadowman
hi leutz,

ich stehe da nohmal vor einem problem. ich möchte eine art newsticker machen. doch leider weiss ich nicht wie dann die ausgelesene datei nach einem bestimmten teilstring durchsuchen kann.
ich habe hier http://www.php.net/manual/de/function.ereg.php nachgeschaut, aber ich werde aus der erklärung leider nicht ganz schlau.
da ich nicht weiss, wie ich einfach nur die weitere zeile auslesen kann.

ich kann ja mal schreiben, wie ich dem text, anhand des beispiels www.counter-strike.de, auslese:

Code: Alles auswählen

$file = fopen ("http://www.counter-strike.de/", "r");
if (!$file) {
   echo "<p>Datei konnte nicht geöffnet werden.\n";
   exit;
}
else
{
   echo "Datei erfolgreich geöffnet!";
}
doch wie kann ich nun in meinem beispiel dann einen bestimmten teil auslesen?? ich kann auch gleich sagen wo der auszulesene text stehen soll: zwischen

Code: Alles auswählen

<td width="80%" class="news">BUG-Fix für STEAM-Update
 - <a href="mailto:
das dumme ist, dass es nicht in der gleichen zeile liegt.
bei www.php.net wurde es so versucht:

Code: Alles auswählen

while (!feof ($file)) {
   $line = fgets ($file, 1024);
   /* Funktioniert nur, wenn Titel und title-Tags in einer Zeile stehen */
   if (eregi ("<title>(.*)</title>", $line, $out)) {
       $title = $out[1];
       break;
   }
}
leider sagen die aber, dass es nur funktioniert, wenn <title></title> in der selben zeile stehen. als nächstes habe ich mir gedacht die funktion strstr() einzusetzen, aber dann säße ich immer noch auf dem rest der datei.
gibt es eine möglichkeit auch nun den letzten teil "wegzuschneiden" ? dann müsste ich nur noch die html tags erfernen, aber das ist ja einfach.

so, ich habe es nun geschaft, die daten auszulesen. im scribe! 2 webeditor gibt es nun eine ticker funktion. die gibt nun auch schon die einzelnn daten aus, aber wie schaffe ich es, diese textbox, an eine rbestimmten stelle zu platzieren???
hier is der code:

Code: Alles auswählen

<script type="text/javascript">
 <!--
  var TickerID = Object;
  var Ticker_Text = new Object();
  var Ticker_Speed = 20;
  var Ticker_Pause = 1500;
  var Ticker_Position = 0; Ticker_Count = 1; Ticker_TextMax = 3;
  
  Ticker_Text[1] = "<?php echo news(1); ?>";
  Ticker_Text[2] = "test";
  Ticker_Text[3] = "scheiss ticker";
  
  function ticker_scroll()
  {
   document.ticker_box.ticker_textbox.value = Ticker_Text[Ticker_Count].substring(0, Ticker_Position);
   if (Ticker_Position ++== Ticker_Text[Ticker_Count].length)
   {
    Ticker_Position = 0;
    TickerID = setTimeout("ticker_scroll()", Ticker_Pause);
    Ticker_Count++;
    if (Ticker_Count == Ticker_TextMax + 1)
     Ticker_Count = 1;
   }
   else
    TickerID = setTimeout("ticker_scroll()", Ticker_Speed);
  }
 //-->
 </script>
leider erscheint diese text box immer links oben, wie kann ich bestimmen, dass sie woanders platziert wird???

Verfasst: 20.12.2003 16:41
von Pyramide
die preg_* Funktionen bieten sogenannte modifiers, mit denen du dieses Verhalten steuern kannst: http://de.php.net/manual/de/pcre.pattern.modifiers.php

Beispiel:

Code: Alles auswählen

$daten = "<h1>Hallo Welt</h1>
<b>Dieses ist ein Test Eintrag</b>
<hr>

<h1>Hallo Leute</h1>
<b>Wie gehts denn so</b>
<hr>";

if(!preg_match_all("#<h1>(.*)</h1>\s*<b>(.*)</b>\s*<hr>#miU", $daten, $matches, PREG_SET_ORDER)) {
	die('Nix gefunden');
}
foreach($matches as $m) {
	echo "Titel: $m[1]\n";
	echo "Inhalt: $m[2]\n";
}

Verfasst: 20.12.2003 20:58
von Shadowman
danke, hat funktioniert, aber ich habe da ein anderes problem und ich weis s nicht, wie ich es lösen kann.
bei den jetztigen news seiten, war der code, mit dem ich die überschrift identifizieren kann, und die überscrift selber, in der gleichen zeile.
bei diablo.de ist das leider nicht so. dort sieht es so aus:

Code: Alles auswählen

<span style="font:bold 10pt Verdana, Arial, Helvetica, sans-serif; color:#cbc1ab; text-align:justify;">
Viren-Epedemie um die Weihnachtszeit
</span>
das ganze ist im theoretischen kein problem.
hier ist der code, mit dem ich versuche die überschrift auszulesen:

Code: Alles auswählen

$datei = file('http://diablo2.ingame.de/index.php');
if(!$datei)
{
echo "<p>Datei Konnte nicht geöffnet werden.\n</p>";
}
else
{  
   $tag="<span style=\"font:bold 10pt Verdana, Arial, Helvetica, sans-serif; color:#cbc1ab; text-align:justify;\">";
   echo "Datei erfolgreich geöffnet!";
   echo "<br>";                 
   for($i=0;$i<count($datei);$i++)
   {
   if($datei[$i]==$tag AND !$abc)
   {
      $zeile=$i++;
      $abc=1;
   }
   }
   echo $datei[$zeile];
} 
de code findet die zeile, mit dem tag raus, incrementiert die zeilennummer und gibt dann die überschrift aus, aber es will nicht funktionieren.
ich bekomme nur

Code: Alles auswählen

Datei erfolgreich geöffnet!
was mache ich da falsch???