Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Bestimmte Stelle im Quelltext auslesen und in Variable speichern

Frage Entwicklung PHP

Mitglied: Lampux

Lampux (Level 1) - Jetzt verbinden

15.11.2010, aktualisiert 09:57 Uhr, 7358 Aufrufe, 7 Kommentare

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):

01.
  
02.
<?php 
03.
$quelltext = file_get_contents('http://www.beispiel.de'); 
04.
$suche = 'class="file_description_box"><a href="'; 
05.
preg_match('/' . preg_quote($suche) . '/', $quelltext, $treffer); 
06.
echo $treffer[0]; 
07.
?> 
08.
 


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

Mit freundlichen Grüßen

Lampux
Mitglied: maretz
15.11.2010 um 09:57 Uhr
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?
Bitte warten ..
Mitglied: Lampux
15.11.2010 um 10:02 Uhr
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.
Bitte warten ..
Mitglied: maretz
15.11.2010 um 10:21 Uhr
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[0] dein Link
}
echo $text2[0]; // 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...
Bitte warten ..
Mitglied: Lampux
15.11.2010 um 10:56 Uhr
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:

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


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

Mit freundlichen Grüßen Lampux
Bitte warten ..
Mitglied: nxclass
15.11.2010 um 11:30 Uhr
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:
01.
preg_match('/' . preg_quote($suche) . '([^"]*)\"/', $quelltext, $treffer);
Bitte warten ..
Mitglied: Lampux
15.11.2010 um 13:19 Uhr
Leider funktioniert diese Lösung auch nicht

Hier das Script:

01.
<?php 
02.
$quelltext = file_get_contents('http://www.beispiel.de'); 
03.
$suche = 'class="file_description_box"><a href='
04.
preg_match('/' . preg_quote($suche) . '([^"]*)\"/', $quelltext, $treffer); 
05.
echo $treffer[0]; 
06.
?>
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:

01.
<?php 
02.
$quelltext = file_get_contents('http://www.beispiel.de'); 
03.
$suche = 'class="file_description_box"><a href='
04.
if (preg_match("/" . preg_quote($suche) . "/",$quelltext)) { 
05.
$text = preg_split('a href=\"',$quelltext); // Jetzt steht schonmal alles hinter a href=" in $text[1] 
06.
$text2 = preg_split ('\"',$text[1]); // Jetzt steht in $text2[0] dein Link 
07.
08.
echo $text2[0]; // Sollte den Link ausgeben 
09.
?>
Ich hoffe das mir jemand helfen kann
Bitte warten ..
Mitglied: Lampux
15.11.2010 um 15:05 Uhr
Okay, Danke für eure Mühe, ich habe nun die Lösung: Falls es jemand intressiert, hier die Lösung:

01.
<?php 
02.
 
03.
$quelltext = file_get_contents("http://www.beispiel.de"); 
04.
preg_match("/class=\"file_description_box\"><a href=\".+\" target/",$quelltext,$img_tag);   
05.
$bild = htmlentities($img_tag[0]); 
06.
 
07.
preg_match("/http.+\"/",$img_tag[0],$img); 
08.
$bild3 = str_replace("\"", "", $img[0]); 
09.
$bild2 = htmlentities($bild3); 
10.
 
11.
echo $bild2
12.
 
13.
?>
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Wert in Registry suchen und in Variable speichern (2)

Frage von J.Troll zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

PHP
gelöst HTML Dropdownmenü auslesen und in PHP als Variable übergeben (35)

Frage von ITFlori zum Thema PHP ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (19)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (19)

Frage von patz223 zum Thema Windows Userverwaltung ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (15)

Link von Penny.Cilin zum Thema Viren und Trojaner ...