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, 4337 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
Windows Server
Win2016 - Failovercluster erstellen (4)

Frage von emeriks zum Thema Windows Server ...

JavaScript
Per URL direkt Button klicken (3)

Frage von Peter32 zum Thema JavaScript ...

PHP
Je nach angefragter Url einen anderen Titel einfügen (11)

Frage von Snowboarder1994 zum Thema PHP ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
ISDN & Analoganschlüsse
gelöst Splitter - RJ45 zu RJ11? (13)

Frage von Waishon zum Thema ISDN & Analoganschlüsse ...

Webbrowser
Windows 7 unbeliebte Internetseite sperren (13)

Frage von Daoudi1973 zum Thema Webbrowser ...

LAN, WAN, Wireless
gelöst Suche Firmware Image für Cisco Aironet 1252 (10)

Frage von Herbrich19 zum Thema LAN, WAN, Wireless ...

Webbrowser
Internet Explorer schliesst direkt bei Start (10)

Frage von gabeBU zum Thema Webbrowser ...