Vorheriges Thema: Nächstes Thema: |
Autor |
Nachricht |
BrokenCode Häufiger Poster
Anmeldungsdatum: 04.12.2008 Beiträge: 17
|
Verfasst am: 20.12.2008 18:49:41 Titel: Zeichen aus Website auslesen. |
|
|
Hallo Jungs.
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 |
|
|
Kambfhase Häufiger Poster
Anmeldungsdatum: 19.03.2006 Beiträge: 235
|
|
Nach oben |
|
|
BrokenCode Häufiger Poster
Anmeldungsdatum: 04.12.2008 Beiträge: 17
|
Verfasst am: 20.12.2008 22:14:09 Titel: |
|
|
Danke, dude.
Hilft mir schon sehr. Bei Fragen melde ich mich wieder.
the BC. |
|
Nach oben |
|
|
BrokenCode Häufiger Poster
Anmeldungsdatum: 04.12.2008 Beiträge: 17
|
Verfasst am: 21.12.2008 00:54:41 Titel: |
|
|
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!
-BC- |
|
Nach oben |
|
|
Kambfhase Häufiger Poster
Anmeldungsdatum: 19.03.2006 Beiträge: 235
|
|
Nach oben |
|
|
Frosty Häufiger Poster
Anmeldungsdatum: 27.10.2008 Beiträge: 221
|
Verfasst am: 21.12.2008 22:53:42 Titel: |
|
|
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 |
|
|
BrokenCode Häufiger Poster
Anmeldungsdatum: 04.12.2008 Beiträge: 17
|
Verfasst am: 21.12.2008 23:15:43 Titel: |
|
|
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. |
|
Nach oben |
|
|
Kambfhase Häufiger Poster
Anmeldungsdatum: 19.03.2006 Beiträge: 235
|
Verfasst am: 22.12.2008 11:09:15 Titel: |
|
|
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 |
|
|
BrokenCode Häufiger Poster
Anmeldungsdatum: 04.12.2008 Beiträge: 17
|
Verfasst am: 22.12.2008 11:23:12 Titel: |
|
|
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 |
|
|
Frosty Häufiger Poster
Anmeldungsdatum: 27.10.2008 Beiträge: 221
|
Verfasst am: 22.12.2008 12:51:36 Titel: |
|
|
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 |
|
|
Frosty Häufiger Poster
Anmeldungsdatum: 27.10.2008 Beiträge: 221
|
|
Nach oben |
|
|
BrokenCode Häufiger Poster
Anmeldungsdatum: 04.12.2008 Beiträge: 17
|
Verfasst am: 22.12.2008 17:38:41 Titel: |
|
|
Danke erstmal für Eure Vorschläge.
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 |
|
|
Frosty Häufiger Poster
Anmeldungsdatum: 27.10.2008 Beiträge: 221
|
Verfasst am: 22.12.2008 18:32:47 Titel: |
|
|
Ja, dann nimm eines der obigen Skripte. Denn genau das tun sie ja.
*in vorweihnachtlicher Stimmung*
Frosty |
|
Nach oben |
|
|
BrokenCode Häufiger Poster
Anmeldungsdatum: 04.12.2008 Beiträge: 17
|
Verfasst am: 22.12.2008 20:02:25 Titel: |
|
|
Jooo.... ich bin auch schon sehr weihnachtlich eingestellt.
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!!
~~~~~~~
Broken. |
|
Nach oben |
|
|
Frosty Häufiger Poster
Anmeldungsdatum: 27.10.2008 Beiträge: 221
|
Verfasst am: 23.12.2008 22:00:56 Titel: |
|
|
1. strlen() ist die Antwort.
2. Ja
LG
Frosty |
|
Nach oben |
|
|
|
|
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.
|
|
|