String aus Quelltext auslesen

mwebmedia

Grünschnabel
Guten Morgen,
bin neu hier, und hoffe ich mache nichts falsch und es ist die richtige Sektion :D
Also es dreht sich um folgendes:

PHP:
<?php
$homepage = file_get_contents('EINEURL');

// den Hostnamen aus URL holen
preg_match('@^(?:<div class="sl-item-viewers">)?([^/]+)@i', $homepage, $treffer);
$host = $treffer[1];

echo $host;
?>

Ich versuche aus einem Quelltext der URL 'EINEURL' genau diese Stelle zu suchen: <div class="sl-item-viewers">
Das was danach kommt, soll er ausgeben. Im Quelltext sieht das ganze so aus:

Code:
<div class="sl-item-viewers">
5466 Viewers
</div>

Und vorallem, soll er nur den ersten treffer nehmen und auswerten!

Wäre super wenn ihr mir helfen koenntet weil das jetztige nicht wirklich geht :/
MfG
 
Gehe Ich richtig in der Annahme, dass du einfach den Inhalt des divs haben willst?

Also das ganze könntest du wohl in etwa so lösen
Code:
/<div class="sl-item-viewers">(.*)</div>/

Solange es bei einem einfachen Aufbau bleibt sollte das wohl genügen.

Hoffe Ich konnte helfen
Grüße Shogoki92
 
Also mit regulären Ausdrucken komme ich meistens auch nicht klar. Habe es deshalb ein wenig anders gemacht:


PHP:
<?php
$homepage = file_get_contents('unbenannt.html');

$start = strpos($homepage, '<div class="sl-item-viewers">') + 29;
$laenge = strpos($homepage, '</div>', $start) - $start;

$teil = substr($homepage, $start, $laenge);

echo $teil;
?>

Angezeigt wird dann: 5466 Viewers
 
RegExp ist cool. :)

(1) LookAround Insertions hab ich anfangs auch benutzt, sind aber nicht nötig. ?:
(2) Hinter der LAI, also dem Div hast Du nur ein ?, was Zeichenanzahl {0,1} (1 oder keins) entspricht.

In meiner Signatur ist ein Regex-Onlinetester. Wirklich super, um im Vornherein schon mal auszuloten. Wie auch Shogoki würde ich es ganz simpel machen. Ich würd aber eher
Code:
#<div class="sl-item-viewers">(.*?)</div>#
benutzen, um dem Quantor seine Gierigkeit zu nehmen. (greedy vs. non- oder ungreedy)
Funktionieren würde auch
Code:
#<div class="sl-item-viewers">([^<]+)</div>#
Wir sagen einfach, solange kein < kommt, soll eingefangen werden. Ach ja, möglicherweise muß das Slash im </div> escaped werden mit einem Backslash, was dann <\/div> wäre.

mfg chmee
 
RegExp ist cool. :)

(1) LookAround Insertions hab ich anfangs auch benutzt, sind aber nicht nötig. ?:
(2) Hinter der LAI, also dem Div hast Du nur ein ?, was Zeichenanzahl {0,1} (1 oder keins) entspricht.

In meiner Signatur ist ein Regex-Onlinetester. Wirklich super, um im Vornherein schon mal auszuloten. Wie auch Shogoki würde ich es ganz simpel machen. Ich würd aber eher
Code:
#<div class="sl-item-viewers">(.*?)</div>#
benutzen, um dem Quantor seine Gierigkeit zu nehmen. (greedy vs. non- oder ungreedy)
Funktionieren würde auch
Code:
#<div class="sl-item-viewers">([^<]+)</div>#
Wir sagen einfach, solange kein < kommt, soll eingefangen werden. Ach ja, möglicherweise muß das Slash im </div> escaped werden mit einem Backslash, was dann <\/div> wäre.

mfg chmee

WOW! :D Hammer Lösungsvörschläge und funktonieren tut es wirklich auf anhieb! Vielen, vielen Dank!
 
Zurück