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

gelöst Regex: auto link

Mitglied: Badger

Badger (Level 2) - Jetzt verbinden

22.03.2018 um 17:02 Uhr, 1133 Aufrufe, 4 Kommentare, 1 Danke

Hallo Leute,

mittels folgenden Code durchsuche ich einen String und erzeuge klickbare Links:
01.
$url = '@(http(s)?)?(://)?(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])@';
02.
$content = preg_replace($url, '<a href="http$2://$4" title="$0">$0</a>', $content);
Den Code selbst habe ich nach einiger Suche im www gefunden.

Nun aber folgendes Problem: wenn im String bereits ein klickbarer Link (<a ......>) vorhanden ist, setzt er davor nochmal ein <a ...>, da der Code nicht prüft, ob der Link "Text" ist oder schon ein Anchor.
Leider bin ich nicht 1000% fit mit Regex und meine Versuche das Problem zu lösen sind bisher gescheitert.

Hat wer eine Idee bzw. einen Ansatz für mich?

Besten Dank für eure Hilfe
Patrick
Mitglied: 135799
22.03.2018, aktualisiert um 17:53 Uhr
Machs z.B. mit einem negative lookbehind
01.
$url = '@(?<!href=["\'])https?://(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])@i';
02.
$content = preg_replace($url,'<a href="$0">$0</a>',$content);
Schnuffi
Bitte warten ..
Mitglied: Badger
23.03.2018 um 09:10 Uhr
Danke für den Tipp. Leider hat das bei mir nicht ganz fehlerfrei funktioniert.
Folgendes hat nun mein Problem gelöst:

01.
$url = '@(?:http([s]?):\/\/)?(([a-zA-Z0-9-]+[.])+[a-zA-Z0-9-]+(\/[a-zA-Z0-9-]*)*(\?[^\s]*)*)(?![^\s]*>)@i';	
02.
$content = preg_replace($url, '<a href="$0" title="$0">$0</a>', $content);
Grüße
Patrick
Bitte warten ..
Mitglied: 135799
23.03.2018, aktualisiert um 09:36 Uhr
Doch wurde getestet, dein Regex verhindert nicht effektiv das es Verschachtelungen geben kann, aber wat Solls, kennt ja keiner hier deine Source ...
Bitte warten ..
Mitglied: Badger
23.03.2018 um 09:41 Uhr
Jetzt weiß ich, warum deiner "nicht funktioniert": es wird zwingend ein http(s) erfordert vor dem link (und das habe ich bei meinen Tests nicht gemacht).
Danke.

Schön langsam verstehe ich, warum das viele CMS nicht im Standard haben: so extrem viele Fälle sind zu berücksichtigen (mit http(s) und ohne, ist bereits ein Link oder nicht,...)
Bitte warten ..
Ähnliche Inhalte
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 ...

Windows Tools
Findstr und regex
gelöst Frage von tobmesWindows Tools5 Kommentare

Hi Experten, ich habe ziemlich viele PDF-Dateien, die ich mittels eines Batch-Files nach einem Bestimmten Muster durchsuchen möchte. Die ...

Datenbanken

Regex mittels Regex suchen (Problem: verschiedene Längen)

Frage von Phreak87Datenbanken5 Kommentare

Hallo RegExperten, ich habe ein Problem mit dem definieren einer Regex-Regel. Ich habe eine Regex-Suchmaske (z.B. Test123 A4 .C) und möchte ...

Neue Wissensbeiträge
Sicherheits-Tools

TrendMicro Worry-Free Business Security 10.0 SP1 - Jetzt in Deutsch verfügbar! (Windows 10 1903 Support)

Tipp von TrinXx vor 1 TagSicherheits-Tools1 Kommentar

Moin! Nach wochenlangem Warten wird Trend Micro das SP1 für WFBS 10 voraussichtlich am 26.08.19 veröffentlichen. Ich habe das ...

Hyper-V
Setup VM W2016 startet nicht in Hyper-V 2016
Erfahrungsbericht von keine-ahnung vor 2 TagenHyper-V4 Kommentare

Moin, sitze gerade über meinem neuen Server und versuche, die VM auf den Host zu prügeln. Jetzt wollte ich ...

Server-Hardware

HPE Proliant ML350P Gen8 Probleme mit Zugriff auf Raid-Volumes

Erfahrungsbericht von goscho vor 2 TagenServer-Hardware1 Kommentar

Hallo Leute, das Problemgerät: HPE ML350P G8 Windows Server 2012R2 HyperV-Host 8 x 300 GB 10K SAS HDD (1 ...

Humor (lol)

"Linux und 5 Gründe Warum man kein Windows verwenden sollte sondern Ubuntu Linux"

Information von Snowbird vor 4 TagenHumor (lol)9 Kommentare

Gerade gefunden. Ja, ist etwas älter, aber irgendwie lustig?

Heiß diskutierte Inhalte
Backup
Veeam Backup Endpoint Free sichert nicht alle Dateien in AppData
gelöst Frage von speedy26gonzalesBackup12 Kommentare

Hallo, ich sollte ein paar Dateien in C:\Users\xyc\AppData\Local\Microsoft\Outlook wieder herstellen. Auf dem Benutzerkonto ist in Outlook ein IMAP Konto ...

Server
Ein Server ins Haus stellen. Was brauche ich dafür?
Frage von JoschiTomServer11 Kommentare

Hallo Community, ich spiele mit dem Gedanken eine Server mir zu holen. Was brauche ich dafür? Und wie sind ...

Windows Server
Ist es möglich, eine deutsche W2016 Installation mit einer UK-Lizenz zu aktivieren?
gelöst Frage von keine-ahnungWindows Server10 Kommentare

Moin at all, ist ja noch Freitag. Ich habe hier noch zwei UK OEM W2016 Standard Pakete rumfliegen Muss ...

Windows 10
Windows 10 Backup auf Netzwerk Storage
Frage von Futschel2608Windows 1010 Kommentare

Hallo geehrte Mitstreiter Innen, Wir wollen in unserer Windows 10 Domäne den Einzelnen Usern ermöglichen ihre Desktop PC's zusichern. ...