HTMLWorld - HTML, CSS, JavaScript, PHP, Java, Flash und vieles mehrHTMLWorld:   Home | Impressum
 

 
 

Anzeige 
 
HTMLWorld » Forum

Thema anzeigen - Zeichen aus Website auslesen.

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Zeichen aus Website auslesen.
Gehe zu Seite 1, 2  Weiter
 

Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   PHP
Vorheriges Thema:
Nächstes Thema:  
Autor Nachricht
BrokenCode
Häufiger Poster


Anmeldungsdatum: 04.12.2008
Beiträge: 17

BeitragVerfasst am: 20.12.2008 18:49:41    Titel: Zeichen aus Website auslesen. Antworten mit Zitat

Hallo Jungs. Wink

Und zwar habe ich das Problem, dass ich von einer website eine 8-stellige Zahl auslesen möchte und diese -quasi dynamisch- in einen Link einbauen möchte.

Also in einem Link steht z. B.:

http://www.dynamicsite.com/thread-12345678&error=0&msg12.html

Nun möchte ich die 12345678 (eine ab und zu wechselnde Zahl) in einen Link auf meiner Seite einbinden.

Kann ich das Problem irgendwie per PHP lösen?

-BC-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kambfhase
Häufiger Poster


Anmeldungsdatum: 19.03.2006
Beiträge: 235

BeitragVerfasst am: 20.12.2008 19:01:52    Titel: Antworten mit Zitat

Ich hab einfach nach "php Webseite auslesen" gegoogelt. Ich glaub gleich der erste Link würde dir helfen Wink

http://www.developers-guide.net/forums/3159,php-fremde-webseiten-auslesen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BrokenCode
Häufiger Poster


Anmeldungsdatum: 04.12.2008
Beiträge: 17

BeitragVerfasst am: 20.12.2008 22:14:09    Titel: Antworten mit Zitat

Danke, dude. Wink

Hilft mir schon sehr. Bei Fragen melde ich mich wieder.


the BC.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BrokenCode
Häufiger Poster


Anmeldungsdatum: 04.12.2008
Beiträge: 17

BeitragVerfasst am: 21.12.2008 00:54:41    Titel: Antworten mit Zitat

Mh... hilft fast weiter. ^^

Einziger Mängel an dem Script, welches auf deiner Site zu finden war ist, dass ich keinen bestimmten (!) Bereich des Links auslesen kann. Mit dem ausgelesenen Bereich möchte ich dann auch arbeiten können.

Code:
   <?php
$host = "http://forum.developers-guide.net/forumdisplay.php?f=9";
$filestring = file_get_contents($host);
$startpos = 0;
while($pos = strpos($filestring, "<a href", $startpos))
{
    $string = substr($filestring, $pos, strpos($filestring, "</a>", $pos + 1) - $pos);
    // Wenn 'id="thread_title_' in $string ist, gib den Link aus
    if(stristr($string, 'id="thread_title_')) {
        echo $string."</br>";
    }
    $startpos = $pos + 1;
}
?>


Der obige Code durchsucht z. B. die Site nach Links, welche den Tag "id="thread_title_" beinhalten. Wenn ich die sach weiterspinnen würde, möchte ich die Links noch weiter filtern und einen bestimmten Teil extrahieren (so z. B. bloß das 5. bis 12. Zeichen des Links). Dieses wiederrum sollte in einen anderen link meiner eigenen Site eingefügt werden können.

Klingt unglaublich, sollte aber machbar sein.

Hilf mir weiter, Neo! Wink

-BC-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kambfhase
Häufiger Poster


Anmeldungsdatum: 19.03.2006
Beiträge: 235

BeitragVerfasst am: 21.12.2008 13:49:05    Titel: Antworten mit Zitat

Was du brauchst sind Reguläre Ausdrücke (RegExp). Damit kannst du gut filtern, falls der Aufrau der Links bekannt und einigermaßen ähnlich ist.

ein Tutorial:
http://www.tutorials.de/forum/php-tutorials/142738-regulaere-ausdruecke-regular-expressions-regex.html

Mal wieder Google:
http://www.google.com/search?q=php+regexp
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Frosty
Häufiger Poster


Anmeldungsdatum: 27.10.2008
Beiträge: 221

BeitragVerfasst am: 21.12.2008 22:53:42    Titel: Antworten mit Zitat

Hi ho,
es gibt verschiedene Wege deine Zahlenfolge auzulesen:
1.
Code:
$link = "http://www.dynamicsite.com/thread-12345678&error=0&msg12.html";

//String trennen bei "-"
$split_link = split("-", $link);

//Wähle Null Zeichen vom Beginn und -19 Zeichen von ende
$filter_link = substr($split_link[1], 0, -19);
echo $filter_link;

Methode 2:

Code:
$link = "http://www.dynamicsite.com/thread-12345678&error=0&msg12.html";

//String trennen bei "-"
$split_link = split("-", $link);

//Array-Element nochmal trennen bei "&"
$split_2 = split("&", $split_link[1]);

echo $split_2[0];
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BrokenCode
Häufiger Poster


Anmeldungsdatum: 04.12.2008
Beiträge: 17

BeitragVerfasst am: 21.12.2008 23:15:43    Titel: Antworten mit Zitat

Also könnte mein Code...so aussehen:

Code:
<?php
$host = "http://www.dynamicsite.com/thread-12345678&error=0&msg12.html";
$filestring = file_get_contents($host);
$startpos = 0;
while($pos = strpos($filestring, "thread_title_", $startpos))
{
    $string = substr($filestring, $pos, strpos($filestring, "</a>", $pos + 1) - $pos);
    // Wenn 'id="thread_title_' in $string ist, gib den Link aus
    if(stristr($string, 'thread_title_')) {
   //String trennen bei "-"
    $split_link = split("-", $link);
   //Wähle Null Zeichen vom Beginn und -19 Zeichen von ende
$filter_link = substr($split_link[1], 0, -19);
echo $filter_link;
    }
    $startpos = $pos + 1;
}
?>


Mh... irgendwie sieht mir das noch zu zusammengklatscht aus.
ich finds genial,l dass du mir wieder zu Seite stehst, Frosty. Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kambfhase
Häufiger Poster


Anmeldungsdatum: 19.03.2006
Beiträge: 235

BeitragVerfasst am: 22.12.2008 11:09:15    Titel: Antworten mit Zitat

Ich sehe noch 3 Probleme:

1) die While Bedingung. Hier fragst du ab, ob es klappt $pos einen Wert zuzuweisen und nicht den Wert von $pos selber.

2) müsste bei deinem Beispiel der Link immer nach dem ID Tag folgen. Es kann sein, dass das es immer so ist. dann ist dieses Problem keins.

3) Performance: Auch wenn PHP recht schnell ist, dauert es ganz gut die KB einer anderen Webseite zu durchsuchen. evntl wäre es doch einfacher die Links so einzutragen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BrokenCode
Häufiger Poster


Anmeldungsdatum: 04.12.2008
Beiträge: 17

BeitragVerfasst am: 22.12.2008 11:23:12    Titel: Antworten mit Zitat

Zu...

1. Wie wäre die Lösung?

2. ist kein Problem.

3. der Link wechselt ab und zu (ohne ersichtlichen Algorithmus); eine Durchsuchung der Site (zumindest der ersten 30 Zeilen ist zwingend notwendig).


....öhmm...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Frosty
Häufiger Poster


Anmeldungsdatum: 27.10.2008
Beiträge: 221

BeitragVerfasst am: 22.12.2008 12:51:36    Titel: Antworten mit Zitat

Aloha,
was meinst du damit: Der Link wechselt ab und zu? Er wechselt die Position oder den Inhalt? Steht die Zahlenfolge mal hier und mal da? Wenn ja, dann gib mal mehr als ein Beispiel.

Hier sonst n Lösungsansatz:

Code:

   <?php
   $host = "http://www.co-colores.de/test.html";
   $filestring = file_get_contents($host);
   $startpos = 0;
   
   while($pos = strpos($filestring, "<a href", $startpos))
   {
          $string = substr($filestring, $pos, strpos($filestring, "</a>", $pos + 1) - $pos);
          
      if(preg_match("/href=\".+\" /", $string, $match) && preg_match("/thread_title/", $string))
      {
         //String trennen bei "-"
         $split_link = split("-", $match[0]);

         //Wähle Null Zeichen vom Beginn und -19 Zeichen von ende
         $filter_link = substr($split_link[1], 0, -21);
         echo $filter_link;
      }
          $startpos = $pos + 1;
   }
?>

Dies test.html ist eine Testseite, die 2 Links enthält, davon einer, der nicht thread_title als ID hat.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Frosty
Häufiger Poster


Anmeldungsdatum: 27.10.2008
Beiträge: 221

BeitragVerfasst am: 22.12.2008 13:10:55    Titel: Antworten mit Zitat

Und noch ein bisschen verkürzt und ander Smile

Code:
   $host = "http://www.co-colores.de/test.html";
   $filestring = file_get_contents($host);
   
   //Jede Zeile in Array
   $zeilen = explode("\n", $filestring );

   for ($i=1;$i<count($zeilen );$i++)
   {
      if(preg_match("/href=\".+\" /", $zeilen[$i], $match) && preg_match("/thread_title/", $zeilen[$i]))
      {
         //String trennen bei "-"
         $split_link = split("-", $match[0]);

         //Wähle Null Zeichen vom Beginn und -19 Zeichen von ende
         $filter_link = substr($split_link[1], 0, -21);
         echo $filter_link;
      }
   }
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BrokenCode
Häufiger Poster


Anmeldungsdatum: 04.12.2008
Beiträge: 17

BeitragVerfasst am: 22.12.2008 17:38:41    Titel: Antworten mit Zitat

Danke erstmal für Eure Vorschläge. Wink

Der Link sieht im Prinzip so aus, wie am Anfang beschrieben, nur eben die Nummer wechselt, wobei die position gleich bleibt.

Also möchte ich die Abfolge der zahlen u. Zeichen "extrahieren" und in eine andere URL von mir übernehmen lassen können.

Kompliziert.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Frosty
Häufiger Poster


Anmeldungsdatum: 27.10.2008
Beiträge: 221

BeitragVerfasst am: 22.12.2008 18:32:47    Titel: Antworten mit Zitat

Ja, dann nimm eines der obigen Skripte. Denn genau das tun sie ja.

*in vorweihnachtlicher Stimmung*
Frosty Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BrokenCode
Häufiger Poster


Anmeldungsdatum: 04.12.2008
Beiträge: 17

BeitragVerfasst am: 22.12.2008 20:02:25    Titel: Antworten mit Zitat

Jooo.... ich bin auch schon sehr weihnachtlich eingestellt. Razz

DANKE Frosty.

Nun noch zwei letzte Fragen zu diesem Thema:

1. Wäre es auch möglich, die Zeichen von ganz vorn abzuzählen?
2. Kann ich dann bei den Links auf meiner Site einfach z. B.
http://www.dynamicsite.com/thread-<?php $filter_link ?>&error=0&msg12.html schreiben?

HO, HO, HO! FROHE WEIHNACHTEN!! Very Happy

~~~~~~~
Broken.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Frosty
Häufiger Poster


Anmeldungsdatum: 27.10.2008
Beiträge: 221

BeitragVerfasst am: 23.12.2008 22:00:56    Titel: Antworten mit Zitat

1. strlen() ist die Antwort.
2. Ja Smile

LG
Frosty
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   PHP
Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.