| pangu |
Geschrieben am: Fr 16.09.2005, 14:19
|
||||||
![]() AyomRank 6 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 826 Mitglied seit: 29.07.2005 |
nehmen wir an, ich habe folgenden Beispieltext:
wie kann ich jetzt daraus die urls auslesen, dass ich folgenden neuen text erhalte:
..also anklickbare Links OHNE den Text? thx mein bisheriger ansatz:
-> wie kann ich jetzt noch den restlichen text entfernen? (das also NUR die anklickbaren urls übrigbleiben?) geht das mit preg_match_all? -------------------- Jonglieren lernen ♥nette Community rund ums Jonglieren °°°
|
||||||
![]() |
| Sascha Ahlers |
#2 Geschrieben am: Fr 16.09.2005, 15:31 (+01:11)
|
||
![]() AyomRank 8 Gruppe: Experten Entwicklung Beiträge: 1697 Mitglied seit: 27.12.2004 |
Hallo.
Dieser Code sollte alle festen Links innerhalb des href-Attribute von den Link-Tags finden. Gegebenfalls muss noch der Ausdruck innerhalb des "href" Attributes etwas angepasst werden. Ich habe bei den Domainnamen ganz bewusst [^\/]* als Ausdruck verwendet, um auch Domains nach den IDNA [1] Standard zu finden. Punycode [2] zu kontrollieren ist etwas umständlicher, doch kannst Du innerhalb der for-Schleife jeden Link nochmals kontrollieren. Dieser Ansatz geht jedoch davon aus, dass feste Links verwendet werden mit Servernamen usw. Wenn das Script auch direkt kontrollieren soll, ob die URL auch richtig gequotet wurde, dann muss Du das ganze zweimal durchlaufen lassen und die beiden Stellen mit [\'"] durch \' bzw. " ersetzen. Vielleicht muss der Ausdruck noch angepasst werden, da ich nicht auf jedes Zeichen innerhalb einer URI geachtet habe, da dies etwas mehr Zeit in Anspruch nimmt. MfG Sascha Ahlers
Bearbeitet von Sascha Ahlers am Mo 19.09.2005, 16:15 -------------------- Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."
Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007 |
||
![]() |
| pangu |
#3 Geschrieben am: Fr 16.09.2005, 16:04 (+00:33)
|
![]() AyomRank 6 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 826 Mitglied seit: 29.07.2005 |
yep, das scheint zu klappen. vielen dank!
-------------------- Jonglieren lernen ♥nette Community rund ums Jonglieren °°°
|
![]() |
| Sascha Ahlers |
#4 Geschrieben am: Fr 16.09.2005, 18:04 (+02:00)
|
![]() AyomRank 8 Gruppe: Experten Entwicklung Beiträge: 1697 Mitglied seit: 27.12.2004 |
Ich habe den Code gerade nochmal etwas bearbeitet, da ich das Gleichheitszeichen in dem Regulären Ausdruck vergessen habe, was doch noch sehr wichtig ist bei einer URI...
MfG Sascha Ahlers -------------------- Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."
Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007 |
![]() |
| pangu |
#5 Geschrieben am: Fr 16.09.2005, 20:10 (+02:05)
|
![]() AyomRank 6 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 826 Mitglied seit: 29.07.2005 |
hab gerade gesehen, das links der form: http://www.weltkarten-landkarten.de/landka...a/d_default.asp nicht erkannt werden, nur: http://www.weltkarten-landkarten.de ..
-> woran liegt das? -------------------- Jonglieren lernen ♥nette Community rund ums Jonglieren °°°
|
![]() |
| Sascha Ahlers |
#6 Geschrieben am: Fr 16.09.2005, 20:26 (+00:16)
|
||||
![]() AyomRank 8 Gruppe: Experten Entwicklung Beiträge: 1697 Mitglied seit: 27.12.2004 |
Da habe ich halt zwei Zeichen vergessen, ich habe das nochmal kurz nachgebesser, auch im oberen Code. Hier nochmal rot hervorgehoben, welche Zeichen ich hinzugefügt habe (das sind halt Flüchtigkeitsfehler, darum soll man ja auch Software vorher gründlich testen).
MfG Sascha Ahlers -------------------- Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."
Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007 |
||||
![]() |
| pangu |
#7 Geschrieben am: Fr 16.09.2005, 20:34 (+00:08)
|
![]() AyomRank 6 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 826 Mitglied seit: 29.07.2005 |
thx, will das auch besser lernen: kennst du eine seite wo man reguläre expressions gut lernen kann?
-------------------- Jonglieren lernen ♥nette Community rund ums Jonglieren °°°
|
![]() |
| Sascha Ahlers |
#8 Geschrieben am: Fr 16.09.2005, 20:46 (+00:11)
|
||
![]() AyomRank 8 Gruppe: Experten Entwicklung Beiträge: 1697 Mitglied seit: 27.12.2004 |
Klar kenne ich dazu Links:
Die Wikipedia Links sind meistens auch sehr gut ;-) MfG Sascha Ahlers -------------------- Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."
Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007 |
||
![]() |
| Sascha Ahlers |
#9 Geschrieben am: Mo 19.09.2005, 16:19 (+2d 19:33)
|
||||||
![]() AyomRank 8 Gruppe: Experten Entwicklung Beiträge: 1697 Mitglied seit: 27.12.2004 |
Hier nochmal eine Verbesserung, das ensprechende Zeichen kann ich leider nicht markieren, da ich ein Leerzeichen hinzugefügt habe, dafür habe ich den Teilbereich markiert, welcher sich verändert hat:
Leerzeichen gehören halt nicht in einen Link ;-) Obwohl ich habe noch nie versucht einen Link in der Form zu schreiben:
MfG Sascha Ahlers -------------------- Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."
Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007 |
||||||
![]() |
| Sascha Ahlers |
#10 Geschrieben am: Mo 19.09.2005, 17:41 (+01:21)
|
||
![]() AyomRank 8 Gruppe: Experten Entwicklung Beiträge: 1697 Mitglied seit: 27.12.2004 |
Ne, dieses Beispiel war nun etwas anderes gemeint, ob ein Browser diesen Link überhaupt richtig darstellt, na ja, ich kann es gleich mal ausprobieren. Natürlich funktioniert der Reguläre Ausdruck bei einer solchen Schreibweise nicht. Das mit dem Problem bei den Title-Attribute habe ich mit bei der oben markierten Änderung behoben. <edit> Der oben genannte Link funktioniert zumindestens in Opera 8.01 und Firefox 1.0.4 ggf. müsste der Ausdruck dann halt wieder entsprechend angepass werden mit zwei \s* und weiter getestet werden, oder gleich innerhalb der href nur noch den Ausdruck als [^'"]* darstellen und diesen dann im zweiten Schritt überprüfen. </edit> MfG Sascha Ahlers Bearbeitet von Sascha Ahlers am Mo 19.09.2005, 17:46 -------------------- Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."
Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007 |
||
![]() |
| SwiZZ |
#11 Geschrieben am: Di 20.09.2005, 09:15 (+15:33)
|
![]() AyomRank 5 Gruppe: Experten Entwicklung Beiträge: 247 Mitglied seit: 8.11.2004 |
Falls jemmand in regular expresions interessiert ist.
http://www.regularexpressions.info/ <- kann ich nur empfehlen Die regexp buddy finde ich auch noch genial... Gruss Steven -------------------- "I said it was an upgrade. I didn't say it was better."
|
![]() |
| Sascha Ahlers |
#12 Geschrieben am: Di 20.09.2005, 09:35 (+00:19)
|
||
![]() AyomRank 8 Gruppe: Experten Entwicklung Beiträge: 1697 Mitglied seit: 27.12.2004 |
Habe ich doch drauf verwiesen, nicht direkt, aber bei Wikipedia ist der Link mit vorhanden ;-) MfG Sascha Ahlers -------------------- Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."
Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007 |
||
![]() |
5 Monate später...
| cosmo-k |
#13 Geschrieben am: Do 9.02.2006, 22:48 (+5m )
|
|
AyomRank 1 ![]() ![]() Gruppe: Member (inaktiv) Beiträge: 1 Mitglied seit: 9.02.2006 |
Danke, das Thema hat mir wirklich sehr weitergeholfen, aber leider habe ich noch ein Problem. Ich weiß nicht wie ich das jetzt von einer URL auslesen kann...
Ich dachte mir das Ganze so, aber klappt nicht so richtig (Warning: preg_match_all() expects parameter 2 to be string, resource given in "der preg_match_all Zeile"): $eingabe = fopen($url,"r"); preg_match_all('/\<a(.*?)href=[\'"]((http|ftp)s?\:\/\/[^\/ ]*(\/[a-z0-9\/\-\._\%;,\?&\+\[\]\=]*)?)[\'"](.*?)\>(.*?)\<\/a\>/im', $eingabe, $ausgabe, PREG_SET_ORDER); for( $i = 0; $i < count($ausgabe); $i++ ) { echo 'URI: ' . $ausgabe[$i][2] . '<br />'; echo 'Linktext: ' . $ausgabe[$i][6] . '<br /><br />'; } |
![]() |
1 Jahr und 9 Monate später...
| foers |
#14 Geschrieben am: Sa 10.11.2007, 14:18 (+1y 9m )
|
|
AyomRank 1 ![]() ![]() Gruppe: Member (inaktiv) Beiträge: 1 Mitglied seit: 10.11.2007 |
Hallo zusammen,
obwohl ich viel mit diesem Thread gelernt und gearbeitet habe komme ich doch nicht so recht weiter und würde daher gerne meine Frage mit anhängen. Auch ich möchte URLs aus einem Text auslesen lassen und benötige eigentlich einen einfacheren Pattern da meine URLs einen festen Aufbau haben. Dies bekomme ich aber nicht hin. Zur Vereinfachung führe ich mal drei URLs wie Sie bei mir im Text vorkommen an: 1) http://www.allgemeines.info/aktiv.php?doma...e.vu&code=7114d 2) http://besonderes.com/aktiv.php?domain=blo...n.at&code=6654a 3) http://www.spezielles.de/aktiv.php?domain=....com&code=de44s Somit haben meine URLs folgenden Aufbau: http://(www)name.tld/aktiv.php?domain=IRGENDWAS1&code=IRGENDWAS2 Ich könnte also auf den umständlichen <a>-Tag-Abgleich verzichten und gleich mit http:// den Pattern beginnen. Wie schaffe ich das? Viele Grüsse und vielen Dank, Björn |
![]() |
5 Monate später...
| halbesbit |
#15 Geschrieben am: Sa 12.04.2008, 23:31 (+5m )
|
|
AyomRank 3 ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (inaktiv) Beiträge: 38 Mitglied seit: 12.04.2008 |
<?php
error_reporting(E_ALL); // Text bzw. String mit file_get_contents() holen // andere Möglichkeit wäre mit fopen() oder CURL $string = file_get_contents('http://www.ayom.de'); // das Suchmuster mit Delimiter und Modifer (falls vorhanden) $pattern = '!<a.*href\="?(\S+)"([^>]*)>.+</a>!im'; // RegEx mit preg_match_all() auswerten preg_match_all($pattern, $string, $array, PREG_OFFSET_CAPTURE); // formatierte Ausgabe echo '<pre>', print_r($array, true), '</pre>'; ?> http://www.regex-tester.de/regex.html Grüsse halbesbit -------------------- |
![]() |
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/8381
![]() |
![]() ![]() ![]() |
| Themen Titel | Autor | Views | Antworten | Letzte Aktion |
| Ms dos Datei in Text-Datei umwandeln | sylvia73 | 57 | 3 | Mi 2.07.2008, 15:44 |
| [B] Text zum Thema: Umwelt, Klima u. Klimawandel | Schwede | 44 | 0 | Di 1.07.2008, 10:15 |
| Brauche ich so einen Text (Markenschutz)? | alex72 | 135 | 2 | Mi 25.06.2008, 18:53 |
| (B) Text zum Thema "Altersvorsorge/Rente" | tune | 114 | 0 | Sa 21.06.2008, 10:50 |
| [b] aktuellen text über Immobilienkredite | botschek | 83 | 0 | Fr 20.06.2008, 10:17 |
| [SQL] Eine Spalte mit einem Text füllen | woody | 114 | 2 | So 15.06.2008, 21:58 |
| [PHP] Text vernünftig formatieren | TTlong | 118 | 2 | Di 10.06.2008, 20:37 |
| Erstelle Text-Content für Erotikseiten | Max61 | 78 | 0 | Di 10.06.2008, 16:51 |
| Wörter aus Text in Links umwandeln | halbesbit | 92 | 0 | Di 3.06.2008, 04:09 |
| Forumlare auslesen mit enctype="text/plain" | spaceman007 | 219 | 1 | Mi 28.05.2008, 21:23 |
Anzeige - [Interessiert an einer Anzeige?]






















