Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi funktion die alles ausser die root url abschneidet (https://www.delphipraxis.net/110468-funktion-die-alles-ausser-die-root-url-abschneidet.html)

agm65 18. Mär 2008 14:25


funktion die alles ausser die root url abschneidet
 
hi leute ich suche nach einer funktion die es mir ermöglicht bei einer url alles ausser die root url abzuscheiden...
bsp: http://www.google.com/test/test2/test3

ich möchte: http://www.google.com

mkinzler 18. Mär 2008 14:28

Re: funktion die alles ausser die root url abschneidet
 
Zerlege den String (Trenner /) und lösche Alles nach dem 3.

agm65 18. Mär 2008 14:32

Re: funktion die alles ausser die root url abschneidet
 
oder oder halt das 3te element bei ner strinlist mit delimeter /...dachte es gibt ne funktion.

Assertor 18. Mär 2008 14:36

Re: funktion die alles ausser die root url abschneidet
 
Hi,

und dann kommt ein normaler Benutzer und tippt
Delphi-Quellcode:
www.test.de/abc/def/ghi
Was bekommt dein Code dann zurück? ;)

Ich würd pauschal eine Regular Expression vorschlagen. Oder zumindest, falls Du keine RegEx Komponente hast den Spring auf http:// prüfen...

Gruß Assertor

s-off 18. Mär 2008 14:36

Re: funktion die alles ausser die root url abschneidet
 
Zitat:

Zitat von agm65
oder oder halt das 3te element bei ner strinlist mit delimeter /...dachte es gibt ne funktion.

Gibt es auch - indirekt: schau mal hier

agm65 18. Mär 2008 14:43

Re: funktion die alles ausser die root url abschneidet
 
an ne regex hatte ich auch gedacht ..aber der user wird im vorfeld schon gezwugen http:// anzugeben ;)

Die Muhkuh 18. Mär 2008 14:45

Re: funktion die alles ausser die root url abschneidet
 
Also wenn das http:// immer dran ist:

Delphi-Quellcode:
function RootURL(const URL: string): string;
begin
  Result := Copy(URL, 8, Pos('/', URL) + 8);
end;

agm65 18. Mär 2008 14:46

Re: funktion die alles ausser die root url abschneidet
 
jo, danke an alle das passt auch.

Matze 18. Mär 2008 14:55

Re: funktion die alles ausser die root url abschneidet
 
Bei mir gibt Manus Funktion das falsche zurück.

Ich würde es so lösen:

Delphi-Quellcode:
uses StrUtils;

function RootURL(const URL: string): string;
begin
  Result := Copy(URL, 1, PosEx('/', URL, 8));
end;

Die Muhkuh 18. Mär 2008 14:58

Re: funktion die alles ausser die root url abschneidet
 
Zitat:

Zitat von Matze
Bei mir gibt Manus Funktion das falsche zurück.

Jain, ich hab nur nicht beachtet, dass er das mit http:// vorne dran möchte. Meine kopiert alles nach dem http://

Matze 18. Mär 2008 15:03

Re: funktion die alles ausser die root url abschneidet
 
Mit viel Fantasie vielleicht. ;)

Delphi-Quellcode:
RootURL('http://www.matthias-hielscher.de/blalala/hsahs/basksas.jpg')
Code:
www.matthias-h

Die Muhkuh 18. Mär 2008 15:06

Re: funktion die alles ausser die root url abschneidet
 
Mist, jetzt seh ich es.

Ich hatte mein Beispiel nur mit http://www.google.com/bla versucht, da passt es mit den Längen gerade, dass man meint, es kommt das richtige heraus. :mrgreen:

Um PosEx kommt man nicht drum rum, höchstens man schneidet die ersten 8 Zeichen weg, aber Deine Lösung ist da die bessere.

mkinzler 18. Mär 2008 15:34

Re: funktion die alles ausser die root url abschneidet
 
Delphi-Quellcode:
function ExtractDomain( const URL: string):string;
    function CheckProtocoll: Integer;
    begin
         Result:= Pos( '://', URL)+4;
    end;
begin
    Result := Copy(URL, 1, PosEx('/', URL, CheckProtocoll));
end;

DeddyH 18. Mär 2008 15:36

Re: funktion die alles ausser die root url abschneidet
 
Und was macht Ihr bei ftp oder https? Da passt die 8 dann auch nicht mehr :mrgreen:

[edit] Ah, mkinzler hat auch daran gedacht. ;) [/edit]

mkinzler 18. Mär 2008 15:46

Re: funktion die alles ausser die root url abschneidet
 
Wenn man nur die Domäne ohne Protokoll haben will:

Delphi-Quellcode:
function ExtractDomain( const URL: string; StripProtocoll: Boolean):string;
 var
    start: Integer;
    prot: Integer;

    function CheckProtocoll: Integer;
    begin
         Result:= Pos( '://', URL)+4;
    end;
begin
    prot := CheckProtocoll;
    if StripProtocoll then
        start := prot-1
    else
        start := 1;

    Result := Copy(URL, start, PosEx('/', URL, prot));
end;

Christian Seehase 18. Mär 2008 16:24

Re: funktion die alles ausser die root url abschneidet
 
Moin Zusammen,

wobei es nicht ganz "ungefährlich" ist nach :// zu suchen.
Wenn man ganz auf Nummer sicher gehen will ist :/ besser geeignet, da die beiden // nur deshalb unmittelbar aufeinander folgen, weil das, was laut RFC (ich weiss die Nummer jetzt gerade nicht) dazwischen angegeben werden kann/muss, eigentlich nie angegeben wird (mir fällt jedenfalls nichts ein ;-))

marabu 18. Mär 2008 16:37

Re: funktion die alles ausser die root url abschneidet
 
Hallo,

die Suche nach dem net path introducer // finde ich nicht so schlimm, die Code-Beispiele funktionieren ja schon aus einfacheren Gründen nicht zuverlässig.

Der RFC 2396 hat insgesamt 40 Seiten. Selbst der einfache Fall "Extrahieren des Servers" (oder wird hier wirklich die Domain gewünscht?) verlangt schon etwas mehr Überlegung als ich hier erkennen kann.

Ich würde bei Hier im Forum suchenInternetCrackUrl und einer allgemeinen Lösung bleiben.

Freundliche Grüße

mkinzler 18. Mär 2008 16:43

Re: funktion die alles ausser die root url abschneidet
 
Es muss eigentlich gar kein / vorhanden sein, da dies protokollabhängig ist. Bei http://, ftp:// file:// sind sie Teil des Protokolls bei mailto:jemand@irgendwo.tld oder news:blabla.blubb.tld nicht.
http://www.faqs.org/rfcs/rfc1738
http://tools.ietf.org/html/rfc3986


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 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