AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] preg_match_all()

Ein Thema von quendolineDD · begonnen am 19. Aug 2007 · letzter Beitrag vom 6. Sep 2007
Antwort Antwort
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#1

[PHP] preg_match_all()

  Alt 19. Aug 2007, 15:39
Servus community.

Ich habe hier ein Script, welches die 1. 50 User von hier auslesen soll.

Nun, das ist zum Beispiel ein Auszug aus dem Quelltext, der Zeile des 1. Platzes.

Zitat:
<tr><td>1</td><td><a href="http://88.198.6.23/freewar/internal/fight.php?action=watchuser&act_user_id=1239" target="_blank">Bigfoot</td><td>Natla - Händler</td><td>258767</td></tr>
Code:
<?php
$top50= array();
echo "<pre>";
@$handle= fopen("http://rank.freewartools.com/?welt=W11&race=0&send=1", "rb");
if($handle == false) { echo "Verbindungsfehler"; exit(); }
$content= stream_get_contents($handle);
preg_match_all('/<tr><td>[0-9]+<\/td><td><a href=".+" target="_blank">(\w+)<\/td><td>(.+)<\/td><td>([0-9]+)<\/td><\/tr>/', $content, $match);

$top50= array_merge($top50, $match[1], $match[2], $match[3]);
print_r($top50);
echo "</pre>";
?>
Das Ergebnis ist
Zitat:
Array
(
[0] => sykes
[1] => Natla - Händler
[2] => 23989
)
In $match[0] stehen ja alle Treffer drinnen. Durch den Fehler im Stammquelltext, wo kein </a> gesetzt ist, wird alles durchweg verlinkt mit dem Profil des 1. Users. Außerdem wird mir alles nicht Zeilenweise dargestellt, wie ich es bei einem ähnlichen Script habe, welches mir die User durchweg von youtube.com ausliest.

Hab ich vielleicht einen Fehler in meinem regulärem Ausdruck?

Code:
preg_match_all('/<tr><td>[0-9]+<\/td><td><a href=".+" target="_blank">(\w+)<\/td><td>(.+)<\/td><td>([0-9]+)<\/td><\/tr>/', $content, $match);
Danke schonmal für die Hilfe
Gruß quen
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: [PHP] preg_match_all()

  Alt 19. Aug 2007, 15:59
Hi,

im Quelltext der Stammseite ist ein </a> drin. Vllt. solltest Du das doch beachten.
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [PHP] preg_match_all()

  Alt 19. Aug 2007, 16:05
Die Verlinkung der einzelnen Profileist mit fehlerhaftem Quelltext verbunden, weil dort das </a> fehlt. Es kommt nochmal zum Schluss der Tabelle ein Weiter. Dort ist der schließende TAG gesetzt.

Ich wüsste nicht, inwiefern ich das beachten sollte.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: [PHP] preg_match_all()

  Alt 19. Aug 2007, 18:15
Hallo quendolineDD,

vielleicht so...

Code:
  '/<tr><td>[0-9]+<\/td><td><a href=".+?" target="_blank">(.+?)<\/td><td>(.+?)<\/td><td>([0-9]+)<\/td><\/tr>/'
Gruss
Thorsten
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [PHP] preg_match_all()

  Alt 19. Aug 2007, 18:51
Wow, jetzt geht's.

Was ist denn an dem "?" so besonders, das es in der Kombination mit .+ zu den richtigen Treffern kommt.

Danke nochmal
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: [PHP] preg_match_all()

  Alt 19. Aug 2007, 19:32
Hallo quendolineDD,

ohne ? ist .+ gierig. Mit ? wird nur nur das Nötigste berücksichtigt.

Gruss
Thorsten
  Mit Zitat antworten Zitat
Viking

Registriert seit: 6. Sep 2007
2 Beiträge
 
#7

Re: [PHP] preg_match_all()

  Alt 6. Sep 2007, 15:46
Huhu ihr, also ich habe auch ein kleines Problem:

Und zwar will ich aus dem String

avis (u)




das Wort "avis" herausfiltern.

Regex:

$regex = '/<a href="?searchItem=(.+?)">(.+?)<\/a>/';


Das Ergebnis ist ein leerer Array.


Kann mir jemand helfen?

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: [PHP] preg_match_all()

  Alt 6. Sep 2007, 16:49
Hallo Viking, herzlich Willkommen!

Ungetestet, nur über Google gefunden:

Code:
preg_match_all("|<a href=(.*)>(.*)</a>|", 'text1 [url="index.htm"]text2[/url] text3', $out, PREG_PATTERN_ORDER);
print_r($out);
Irgendein Index von $out sollte deinem Titel entsprechen. Die URL übrigens in einem weiteren, falls du das benötigen solltest.
  Mit Zitat antworten Zitat
Viking

Registriert seit: 6. Sep 2007
2 Beiträge
 
#9

Re: [PHP] preg_match_all()

  Alt 6. Sep 2007, 16:58
Hi danke dir, funzt.


Grüße
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz