Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Mit Regex eine klick bare URL erstellen ( harte Nuss)

Frage Entwicklung JavaScript

Mitglied: frank69

frank69 (Level 1) - Jetzt verbinden

06.04.2011, aktualisiert 20:10 Uhr, 4345 Aufrufe, 8 Kommentare

Hallo ich hab hier eine harte Nuss zum Knacken, vielleicht hat ja jemand eine Idee.

Ich möchte einen String, der mehrere Urls enthalten kann mit einem Regex-Befehl so wandeln, dass alle URLs in diesem String anklickbare Links werden.


Es gibt folgende Bedingungen. Wenn die URL https:// oder http:// bereits enthält, dann soll dies beibehalten werden.
Enthält die URL kein http:// oder https:// so soll http:// hinzugefügt werden.

Beispiele:
01.
test.de wird  zu <a href="http://test.de" >http://test.de</a/> 
02.
http://test.de wird  zu <a href="http://test.de" >http://test.de</a> 
03.
https://test.de wird  zu <a href="https://test.de" >https://test.de</a>


Meine Lösung sieht bisher so aus, das ich in einem Schritt einfach alle http:// und https:// aus den Urls in dem String entferne und im 2ten Schritt einfach zu jeder URL http:// + Rahmen hinzufüge.
Das ist aber nicht so günstig, wenn eine ursprungs Url mit https:// startet.

Würde mich interessieren, ob das mit einem replace Befehl möglich ist.

Viel Spass beim Grübeln
Mitglied: Arano
07.04.2011 um 16:25 Uhr
Hi

Ich würde einfach nur die URL "akzeptieren" die mit "http" anfangen.
Das würde den regulären Ausdruck auch vereinfachen weil du die Suche einfach auf von "http" bis ".tld " beschränken kannst (was das HTTPS-Schema natürlich beinhaltet weil es auch mit "http" anfängt).
Sofern du nur nach der Domain an sich suchen möchtest, ohne Unterverzeichnisse, ohne Dateinamen, ohne angehängten Parametern und ohne Dokumentenankern

Viel Spaß beim Grübeln ;)

~Arano
Bitte warten ..
Mitglied: frank69
07.04.2011 um 17:42 Uhr
Hi Arano,
die bisherige Lösung funktioniert auch mit angehängtem Parameter. Der Benutzer hat die möglichkeit mehrere URL belieibiger Art in einen String hintereinander zu schreiben. Das soll auch so bleiben.
Das Ärgerliche an meiner jetztigen Lösung ist halt das https nicht berücksichtigt wird.

Viele Grüße

Frank69
Bitte warten ..
Mitglied: Arano
07.04.2011 um 19:07 Uhr
Hi,

achso, wusst ich ja nicht.
Und was spricht dagegen deinen jetzigen 2 Schritten: http(s) entfernen und http-links erstellen.
in diese zu ändern: Alle http zu links wandeln und alle https zu links wandeln.

Wie machst du das überhaupt ?
Mit regulären Ausdrücken ?
Dann könnte man eventuell das URL-Schema noch einmal kapseln so das es als Wert zur Verfügung steht und dann in dem Link verwendet zu werden.

~Arano
Bitte warten ..
Mitglied: frank69
08.04.2011 um 21:44 Uhr
Hi,

also ich mache das bisher mit 2 Javasript replace Befehlen.
Das in mehreren Schritten programmtechnisch zu lösen ist nicht das Problem
Also das ist eigentlich meine Frage, ob ich mit einem regex Befehl alles lösen kann. Es ist einfach eine Herrausvorderung. Mich würde interessieren, ob es überhautp möglich ist, oder ob das so eine Grenzsache ist. Und wenn es ein Lösung gibt, dann würde ich diese gerne sehen
Also man müsste im dem String die einzelnen URLs erkennen und bei jeder erkennen, ob diese http bzw. https vorgestellt hat und wenn nicht dann dieser http hinzufügen und jeder dieser Urls zusätzlich noch den Rahmen hinzufügen, so dass diese anklickbar sind.

Grüße

Frank69
Bitte warten ..
Mitglied: Arano
08.04.2011 um 22:14 Uhr
Hi,

nein hierfür würde ich auch reguläre Ausdrücke verwenden - eben wegen der mehrfachen Bedingungen.
Das mit dem "http" und "https" sollte kein Problem sein:
(https?)
Mit dieser Kapselung sollte nur "http" oder "https" gefunden werden können.

Also man müsste im dem String die einzelnen URLs erkennen...
Das ist doch der Punk, wie bzw. __woran__ erkennst du denn eine URL wenn sie nicht mit "http(s)" anfängt ?

Rahmen = HTML !


~Arano
Bitte warten ..
Mitglied: frank69
08.04.2011 um 22:39 Uhr
Hi, urls sind doch immer nach dem selben Schema aufgebaut.

Grüße

Frank69
Bitte warten ..
Mitglied: Arano
08.04.2011 um 22:52 Uhr
Ich weiss doch auch nicht alles...
Wie machst du das ?
Bitte warten ..
Mitglied: EinTyp
17.04.2011 um 11:59 Uhr
Hallo frank69,

Ich schreib dir mal ein Code (keine Garantie auf Richtigkeit):

01.
<html> 
02.
  <head> 
03.
    <script> 
04.
      arr = new Array();  //Enthält die URLs 
05.
      arr[0] = "http://test.de"; 
06.
      arr[1] = "https://test.de"; 
07.
      arr[2] = "test.de"; 
08.
      fertig = new Array();  //Enthält die bearbeiteten URLs mit den <a>-Tag 
09.
   
10.
      function makeURL(url) { 
11.
        ende = new Array(); 
12.
        for (i=0;i<url.length;i++) { 
13.
          if (url[i].match(/^http:/gi) || url[i].match(/^https:/gi)) { 
14.
            ende[i] = "<a href=\""+url[i]+"\">URL No."+(i+1)+"</a>"; 
15.
            continue; 
16.
17.
          if (!url[i].match(/^http:/gi)) { 
18.
            ende[i] = "<a href=\"http://"+url[i]+"\">URL No."+(i+1)+"</a>"; 
19.
            continue; 
20.
          } else { 
21.
            ende[i] = "Fehler"; 
22.
            continue; 
23.
24.
25.
        return ende; 
26.
27.
      fertig = makeURL(arr); 
28.
    </script> 
29.
  </head> 
30.
  <body> 
31.
  <script> 
32.
    for (a=0;a<fertig.length;a++) document.write(fertig[a]+"<br>"); 
33.
  </script> 
34.
  </body> 
35.
</html>
Hoffe, dass ich alles richtig gemacht habe (Auch ohne replace-Befehl).

-eintyp-
Bitte warten ..
Ähnliche Inhalte
JavaScript
Per URL direkt Button klicken (4)

Frage von Peter32 zum Thema JavaScript ...

Batch & Shell
gelöst Powershell Regex anders (1)

Frage von ukodus zum Thema Batch & Shell ...

Batch & Shell
gelöst RegEx in M3U (4)

Frage von mguenth83 zum Thema Batch & Shell ...

PHP
gelöst Php regex und Array (5)

Frage von Thomas91 zum Thema PHP ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Internet
gelöst Jeden morgen Internet-Probleme (59)

Frage von pjrtvly zum Thema Internet ...

DSL, VDSL
VDSL Signal via PowerLine an Fritzbox - Möglich? (19)

Frage von Seichobob zum Thema DSL, VDSL ...

Festplatten, SSD, Raid
gelöst Welche Software für Bandlaufwerk (13)

Frage von djonas zum Thema Festplatten, SSD, Raid ...

Vmware
gelöst Update auf ESXI 6.5 Installieren (13)

Frage von zeroblue2005 zum Thema Vmware ...