lampux
Goto Top

Bestimmte Stelle im Quelltext auslesen und in Variable speichern

Guten Tag zusammen,

ich möchte gerne eine bestimmte Stelle auf dem Quelltext einer Website herrauslesen und anschließen in einer Variable speichern. Hier das Beispiel:

Ich Quelltext kommt nur einmal diese Stelle vor:

class="file_description_box"><a href="VARIABLER LINK"

Ich möchte nun den Quelltext nach "class="file_description_box"><a href=" durchsuchen und anschließen den VARIABLEN LINK in einer Variable speichern. Es geht mir eigentlich nur um den VARIABLEN LINK, den muss ich in einer Variablen speichern. Ich habe schon einiges probiert, öfters von vorne wieder angefangen, jedoch kein Erfolg gehabt. Die regulären Ausdrücke ist ein komplexes Thema. Hier mein Beispiel (Ich hab die RegEx wieder entfernt, da es nur zur Fehler kam):

 
<?php
$quelltext = file_get_contents('http://www.beispiel.de');  
$suche = 'class="file_description_box"><a href="';  
preg_match('/' . preg_quote($suche) . '/', $quelltext, $treffer);  
echo $treffer;
?>


Wäre nett, wenn ihr den Code anpassen oder eventuell neu scripten könntet.

Mit freundlichen Grüßen

Lampux

Content-Key: 155069

Url: https://administrator.de/contentid/155069

Printed on: April 19, 2024 at 11:04 o'clock

Member: maretz
maretz Nov 15, 2010 at 08:57:27 (UTC)
Goto Top
Moin,

darf ich dir auch noch Kaffee kochen? Deine Wohnung könnte ich nebenbei auch noch aufräumen wenn du magst...

Fangen wir mal einfach an: Was ist denn der Fehler? Und wäre es nicht sinnvoller zumindest

if (preg_match...) echo "Treffer";

zu schreiben?
Member: Lampux
Lampux Nov 15, 2010 at 09:02:07 (UTC)
Goto Top
Es gibt im obigen Script keinen Fehler, da ich die RegEx wieder entfernt habe, an der Stelle von
"class="file_description_box"><a href="'(.+) REGEX AUSDRUCK" sollte normal ein RegEx Ausdruck stehen, nur kam es bei mir hier immer wieder zu verschiedenen Fehlermeldungen. Wahrscheinlich kenne ich mich dafür in RegEx zu wenig aus. Jedoch lohnt es sich nicht stundenlang nun dort einzulesen, da ich nur dieses einzige Script mit RegEx benötige.

Falls du das Script nicht verstehst, schreib nochmal, ich erklärs dir gerne nocheinmal.

Im obigen Script erhalte ich logischerweise als Ausgabe:

class="file_description_box">

Natürlich ist das nicht was ich möchte, ich möchte den VARIABLEN LINK ausgegeben haben. Jedoch benötige ich dazu erstmal die passenden regulären Ausdrücke dafür. Da der Link nicht jedes mal gleich ist.
Member: maretz
maretz Nov 15, 2010 at 09:21:16 (UTC)
Goto Top
Naja - im schlimmsten Fall kannst du ja ganz stupide vorgehen:

if (preg_match("class=....",$deineZeile) {
$text = preg_split("a href=\"",$deineZeile); Jetzt steht schonmal alles hinter a href=" in $text[1]
$text2 = preg_split ("\"",$text[1]);
Jetzt steht in $text2 dein Link
}
echo $text2; // Sollte den Link ausgeben


Wenn du jetzt also zeilenweise durch deine Quelltext-Datei marschierst dann sollte das so in etwa hinhauen...
Allerdings finde ich die Aussage "lohnt sich nicht" ehrlich gesagt zimlich traurig. Denn damit sagst du das es sich
für dich nicht lohnt das du deine Zeit damit verschwendest -> das sollen lieber andere machen. Und da es sich
für mich dann nicht lohnt MEINE Zeit zu verschwenden (mein Script läuft!) werde ich das jetzt absichtlich nicht
genauer schreiben und das auch sicher nicht testen ob das so jetzt hinhaut...
Member: Lampux
Lampux Nov 15, 2010 at 09:56:20 (UTC)
Goto Top
Leider funktioniert dein Script noch nicht ganz: Ich erhalte folgende Fehlermeldung:

Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in C:\xampp\htdocs\search.php on line 3

Hier das Script:

 <?php
$quelltext = file_get_contents('http://www.beispiel.de');  
if (preg_match('class="file_description_box"><a href=',$quelltext)) {  
$text = preg_split("a href=\"",$quelltext); //Jetzt steht schonmal alles hinter a href=" in $text[1]  
$text2 = preg_split ("\"",$text[1]); //Jetzt steht in $text2 dein Link  
}
echo $text2; // Sollte den Link ausgeben
?>


Die Aussage "lohnt sich nicht" bezieht sich auf den aktuellen Zeitpunk. Beispiel für dich: Du hast ein komplexes Thema, benötigst aber nur einen kleinen Ausschnitt davon in kurzer Zeit. Schaust du dir nun das Thema 10 Stunden an, wenn du dafür eigentlich keine Zeit hast? Die Effektivität ist zu gering, wenn dieser Ausschnitt nur einmal gebraucht wird. Deshalb gibt es Foren, wo Menschen mit viel Erfahrung auf einem bestimmten Gebiet, anderen helfen können. Ich habe mich bemüht, das Problem selbst zu lösen, jedoch ist es mir nicht gelungen. Deine Antwort ist freiwillig, es zwingt dir niemand mir zur helfen. Also falls du nicht helfen möchtest, dann lass es und schaue dir ein anderes Thema an. Natürlich freue ich mich wenn mir jemand hilft, deshalb bin ich ja hier angemeldet face-smile

mfg Lampux
Member: nxclass
nxclass Nov 15, 2010 at 10:30:36 (UTC)
Goto Top
Warum benutzt Du nicht einen XML Parser um an die Daten zu kommen. http://www.php.net/manual/de/book.xmlreader.php

naja - evtl hilft auch das:
preg_match('/' . preg_quote($suche) . '([^"]*)\"/', $quelltext, $treffer);  
Member: Lampux
Lampux Nov 15, 2010 at 12:19:33 (UTC)
Goto Top
Leider funktioniert diese Lösung auch nicht face-sad

Hier das Script:

<?php
$quelltext = file_get_contents('http://www.beispiel.de');  
$suche = 'class="file_description_box"><a href=';  
preg_match('/' . preg_quote($suche) . '([^"]*)\"/', $quelltext, $treffer);  
echo $treffer;
?>

Folgende Ausgabe erhalte ich:

class="file_description_box">


Das Script von Maretz habe ich auch ein wenig angepasst, jedoch scheitet es mit dieser Meldung:

Warning: preg_split() [function.preg-split]: Delimiter must not be alphanumeric or backslash in C:\xampp\htdocs\search.php on line 5

Warning: preg_split() [function.preg-split]: Delimiter must not be alphanumeric or backslash in C:\xampp\htdocs\search.php on line 6

Hier das Script:

<?php
$quelltext = file_get_contents('http://www.beispiel.de');  
$suche = 'class="file_description_box"><a href=';  
if (preg_match("/" . preg_quote($suche) . "/",$quelltext)) {  
$text = preg_split('a href=\"',$quelltext); // Jetzt steht schonmal alles hinter a href=" in $text[1]  
$text2 = preg_split ('\"',$text[1]); // Jetzt steht in $text2 dein Link  
}
echo $text2; // Sollte den Link ausgeben
?>

Ich hoffe das mir jemand helfen kann face-smile
Member: Lampux
Lampux Nov 15, 2010 at 14:05:06 (UTC)
Goto Top
Okay, Danke für eure Mühe, ich habe nun die Lösung: Falls es jemand intressiert, hier die Lösung:

<?php

$quelltext = file_get_contents("http://www.beispiel.de");  
preg_match("/class=\"file_description_box\"><a href=\".+\" target/",$quelltext,$img_tag);    
$bild = htmlentities($img_tag);

preg_match("/http.+\"/",$img_tag,$img);  
$bild3 = str_replace("\"", "", $img);  
$bild2 = htmlentities($bild3);

echo $bild2;

?>