Top-Themen

Aktuelle Themen (A bis Z)

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, 4358 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
Frage von Peter32JavaScript4 Kommentare

Hallo, ich habe leider im Internet nur folgendes gefunden: Man kann per "URL?fieldname=someinput" im Link direkt über die URL ...

Entwicklung
RegEx Formulierung
gelöst Frage von Aki-kunEntwicklung3 Kommentare

Grüße zusammen, RegEx und ich sind inkompatibel . Ich bekomme den Ausdruck einfach nicht hin. (AusdruckA oder AusdruckB oder ...

Batch & Shell
Powershell Regex anders
gelöst Frage von ukodusBatch & Shell1 Kommentar

Hi, kann es sein, dass die Regex-Implementierung anders ist, als gewohnt? Der Regex funktioniert nämlich auf regexr.com -> Was ...

Batch & Shell
Hilfe bei REGEX
gelöst Frage von istike2Batch & Shell9 Kommentare

Hi, Ich habe hier 5 Strings, die ich mit Script filtern sollte. Kann mir jemand verraten, warum "^ -+ ?(\d*\.?\d+ +1000 ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 10 StundenBatch & Shell8 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 12 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Batch & Shell
Neuste Datei via PowerShell kopieren
gelöst Frage von kaiuwe28Batch & Shell11 Kommentare

Hallo zusammen, ich hatte mir mit Hilfe der Suche im Forum einen kleinen Code von colinardo rausgesucht und versucht ...