PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (PHP) - Filterung von bestimmter Stelle aus Quelltext



cnx
17.08.2015, 16:24
Nabend!

Ich möchte aus einem Quelltext mehrere Zeilen auslesen.
Diese Zeilen variieren in folgendem Maße:

<div class="szenebox"> <a href="/ich/variiere/zu/anderen/links.html">ICH_MÖCHTE_AUSGELESEN_WERDEN</a>

Das Ganze kommt mehrmals im Quelltext vor an verschiedenen Stellen.
Das Schwarz-markierte bleibt immer gleich.
Das Blau-markierte variiert, ist aber irrelevant für die Ausgabe.
Das Rot-markierte soll untereinander ausgegeben werden.

Beispiel:
<div class="szenebox"> <a href="/2135262136236.html">SZENE</a>
<div class="szenebox"> <a href="/7689686586578.html">BOX</a>
<div class="szenebox"> <a href="/2169563545145.html">PHP</a>
<div class="szenebox"> <a href="/6737812342142.html">FRAGE?!</a>

echo-Ausgabe:
SZENE
BOX
PHP
FRAGE?!

Ich hoffe, jeder kann nachvollziehen, was ich genau meine :D
Freue mich auf eure Hilfestellungen und Antworten :)

jbs
17.08.2015, 16:53
Moin!



<?php
$input = '<div class="szenebox"> <a href="/2135262136236.html">SZENE</a>
<div class="szenebox"> <a href="/7689686586578.html">BOX</a>
<div class="szenebox"> <a href="/2169563545145.html">PHP</a>
<div class="szenebox"> <a href="/6737812342142.html">FRAGE?!</a>';

$pattern = '/<a href=\"([^\"]*)\">(.*)<\/a>/iU';

if(preg_match_all($pattern, $input, $matches)) {
foreach($matches[2] as $line) {
echo $line.'<br />';
}
}
?>

cnx
17.08.2015, 16:59
Hallöchen!
Erstmal vielen Dank für die schnelle Antwort :)

Das Problem ist, das er so JEDEN Link aus dem Quelltext filtert oder?
Er soll aber lediglich die "Begriffe" suchen und nachher ausgeben, die davor dieses Konstrukt haben: <div class="szenebox">.
Weißt du wie ich das meine? :D

jbs
17.08.2015, 17:13
Das kannste dir aussuchen. Entweder kompletten Link ($matches[0]), die URL ($matches[1]) oder nur den Linktext ($matches[2]). Das ist dann dir überlassen.

Wenn du nur die Links innerhalb der divs haben willst, kannste auch das nutzen:


<?php
$input = '<div class="szenebox"> <a href="/2135262136236.html">SZENE</a>
<div class="szenebox"> <a href="/7689686586578.html">BOX</a>
<div class="szenebox"> <a href="/2169563545145.html">PHP</a>
<div class="szenebox"> <a href="/6737812342142.html">FRAGE?!</a>';

$pattern = '/<div class="szenebox"> <a href=\"([^\"]*)\">(.*)<\/a>/iU';

if(preg_match_all($pattern, $input, $matches)) {
foreach($matches[2] as $line) {
echo $line.'<br />';
}
}
?>

cnx
17.08.2015, 17:19
Perfekt, du bist der Beste!
Ich danke dir <3