» <base href> aus HTML-Quelltext auslesen

Aktuelles Verzeichnis - Alternative zu dirname()Neuen Thread eröffnenNeue Antwort erstellenDomainnamen / Hostnamen validieren
AutorNachricht
Administrator 

Name: Marc
Geschlecht:
Anmeldedatum: 28.08.2004
Beiträge: 52423
Wohnort: Lohmar


Meine eBay-Auktionen:
19.03.2015, 15:57
zitieren

Die Funktion ist dabei herausgekommen:
function base_url($page_url, $dom) {
foreach ($dom->getElementsByTagName('base') as $meta) {
if ($meta->getAttribute('href')) {
// if scheme is missing build url through $page_url
$page_url = preg_match('/^[0-9a-z.\-+]{2,}:\/\//i', $meta->getAttribute('href')) ? $meta->getAttribute('href') : deeplink($page_url, $meta->getAttribute('href'));
break;
}
}
return currentdir($page_url);
}

Dafür notwendig sind die Funktionen currendir() und deeplink().

Beispiel, wie man den Code einsetzt:
$html = '<html><head><base href="http://example.com/base/foo.html"></head><body><body></html>';
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();
$page_urls = array(
'http://example.com/foo',
'https://example.com/foo',
'go://example.com/foo',
);
$resources = array(
'http://example.com/foo',
'https://example.com/foo',
'//example.com/foo',
'/foo/',
'foo/',
'./foo',
'../foo',
'/foo',
'/',
'',
'./',
'/',
);
foreach ($resources as $resource) {
if (strpos($resource, '://') === false) {
foreach ($page_urls as $page_url) {
$base_url = base_url($page_url, $doc);
echo $base_url . ' + ' . $resource . ' = ' . get_deeplink($base_url, $resource) . PHP_EOL;
}
}
}

Damit base_href funktioniert benötigen wir zwei Angaben:
  • die aktuelle Seiten URL
  • den HTML-Quelltext der Seite
base_url() schaut im Quelltext nach dem <base href> Meta-Tag und übernimmt den Link. Außerdem wird der direkt normalisiert. D.h. absolute/relative Links werden in komplett Links mit "http://" gewandelt (entsprechend der Seiten URL). Wird kein <base href> gefunden, wird stattdessen die Seiten URL zurückgegeben. Aber auch nicht der komplette Link, sondern das aktuell gültige Verzeichnis. Das erreichen wir durch currentdir().

base_url() gibt also immer die aktuell gültige base URL zurück:
$base_url = base_url($page_url, $doc);

Die ebenfalls notwendige Funktion deeplink() ist mehrfach nützlich. Liest man z.B. per HTML Bilder aus und möchte diese Bilder auf einen anderen Server übertragen, so kann man mit "./images/image.jpg" meist wenig anfangen. Daher wendet man nun einfach unsere $base_url an:
$img_src = deeplink($base_url, "./images/image.jpg");

In dem Fall erhalten wir eine vollständige URL zurück wie z.B:
http://example.com/base/images/image.jpg


pn email
Gast 
19.03.2015, 15:57
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "<base href> aus HTML-Quelltext auslesen" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
MediaWiki "Quelltext anzeigen" ausblenden
Hallo, ich suche nach der Möglichkeit den Tab "Quelltext anzeigen" für Gäste auszublenden oder die Funktion komplett abzuschalten. Leider brachte Google mich da nicht sehr weit und auch die SuFu brachte leider nicht den Erfolg. Ich verwende die...
von Alucard 1
1
1.373
17.02.2013, 12:30
mgutt
base mangacar MC2
moin, hat jemand ne Base fürn MC2 auf der Festplatte. finde leider nix im www außer die zeichnung in meiner sig. :( kann mir jemand...
von RGT
1
184
12.04.2011, 13:49
Masamune
Acura RSX aus USA base model TÜV
Hallo alle Ich überlege ein RSX aus USA base model zu kaufen, das auto wurde bereits verzollt, für den Tüv eingeblich die originale scheinwerfer sind nicht eintragbar, ich habe keine ahnung was und wie umgebaut werden muss, habe sogar gesucht im forum...
von Loyal Honda Fan
5
272
20.11.2023, 13:17
Zavage
 Es war einmal ein RSX... ### Base -> Type-S ###
Servus Ich geister hier schon eine weile im Forum herum und dachte jetzt wäre guter Zeitpunkt euch meinen RSX vorzustellen. Ich selbst komme aus dem schönen Sachsenland bin aber viel in der Weltgeschichte unterwegs.... Umbauten vom Kauf 2007 bis 2010 -...
von Little_Hombre
69
7.812
19.10.2013, 18:54
Little_Hombre
Bremsenumbau EP1, EP3, Acura RSX Base Hilfe !
Servus Ich bin jetzt fast am Ende und hoffe das ihr mir weiter helfen könnt. Die Lage: Ich fahr nen Acura RSX (160PS) und bin mit den Bremsen nicht sehr zufrieden, deswegen sollte eine neue Bremsanlage rein. Nach vielem Recherchieren hab ich...
von Little_Hombre
2
485
15.06.2009, 16:54
Little_Hombre
Neue Pics von mir ( Air Base Area ;))
Leider hatte ich mein Stativ beim Zelt gelassen, hatte aber keine Zeit es zu holen, weils sonst zu dunkel wäre, dank ps geht es einigermaßen 8) ...
von huy
10
1.548
09.05.2005, 21:18
TomekEJ9
Project Base Germany - Projektausschreibungen kostenlos!
Hallo, mein Unternehmen hat eine Seite entwickelt, bei dem Benutzer die Möglichkeit haben ihre Projekte einzustellen und Unternehmen oder Freelancer Angebote abgeben können. Das besondere an der Seite ist, das dies für beide Seiten zu 100% kostenlos...
[Projekte]von tbraun
0
238
17.11.2012, 14:09
tbraun
CSS versus HTML?
guten tag! bin ein ziemlicher neuling hier und auch im mediawiki-bereich! dank dieses forums habe ich schon sehr viel erreicht und das wiki-system eingerichtet, wie es sich hingehört. nur eine für mich unlogische bzw. undurchschaubare sache ist offen,...
von nostra
4
273
17.10.2014, 11:06
mgutt
 HTML-/CSS-Entwickler (w/m)
Die Starmeo Betriebs GmbH ist im August 2011 mit Sitz in Köln gegründet worden. Starmeo.com ist eine Social-Media-Plattform, spezialisiert auf die Bedürfnisse von Stars und deren Fans. Das junge Start-up sucht noch weitere Mitarbeiter (m/w) in...
[Jobs & Stellenangebote]von Starmeo
0
691
16.12.2011, 14:47
Starmeo
Dateiupload als Multiupload + pdf aus HTML
Suche Programmierhilfe / vergebe Praktikum bei zukünftiger Startup Unternehmung eines Social Networks. Von Vorteil wäre: php, mysql, ajax, smartphone app-programmierung u.a. für multiupload mit thumbnail + html daten in pdf speichern/erstellen. Am besten...
[PHP]von debianer
0
324
24.09.2012, 21:38
debianer
© 2004 - 2025 www.programmierer-forum.de | Communities | Impressum |