Regulärer Ausdruck / Url in Text finden

S

stuzfuz

Eroberer
Hallo,

ich würde gerne aus einen Text den der User eingibt die url raussuchen und diese dann als Link ausgeben.
Bsp.: www.google.at soll zu
Code:
<a href="http://www.google.at">www.google.at</a>
werden
 
Beispiel mit Perl-Regex:
Code:
#!/usr/bin/perl -w

open FILE, "test.html";
my $line;

while ($line = <FILE>) {
    if($line =~ /href="(.*)".*/) {
	print $1."\n"; # $1 enthaelt die URL
    }
}
 
sorry hab ich eventuell vergessen dazuzuschreiben, brauch es für PHP.

Danke
 
PHP:
<?php

$subject = 'Das ist ein Text mit einem <a href="#link" title="spannender Link">Link</a> und einem weiteren sehr spannenden <a href="#link2" title="spannender Link">spannenden Link</a>.';
$pattern = '/href="(.*)"/Ui';

preg_match_all($pattern, $subject, $matches);

var_dump($matches);

?>

So?
 
ich fürchte, er will es genau anders herum - und das ist nicht so einfach.

woran erkennt man denn, das ein frei eingegebener Text eine URL enthält, wenn die typischen Charakteristika wie http:// und ähnliches nicht enthalten sind?
 
PHP:
<?php

$pattern1 = "/^(?:ftp|https?):\/\/(?:(?:(?:[\w\.\-\+!$&'\(\)*\+,;=]|%[0-9a-f]{2})+:)*(?:[\w\.\-\+%!$&'\(\)*\+,;=]|%[0-9a-f]{2})+@)?(?:(?:[a-z0-9\-\.]|%[0-9a-f]{2})+|(?:\[(?:[0-9a-f]{0,4}:)*(?:[0-9a-f]{0,4})\]))(?::[0-9]+)?(?:[\/|\?](?:[\w#!:\.\?\+=&@$'~*,;\/\(\)\[\]\-]|%[0-9a-f]{2})*)?$/i";

$pattern2 = "/^(?:[\w#!:\.\?\+=&@$'~*,;\/\(\)\[\]\-]|%[0-9a-f]{2})+$/i";

?>

Achso,

da müsste er sich RFC3986 durchlesen, um das korrekt zu handeln. Die RFC behandelt aber bestimmt keine so seltsamen Dinge wie fehlende Protokoll-Handler. URLs ohne Protokoll-Handler sind eh doof. Da würde ich es mir einfacher machen und versuchen, das den Leuten abzugewöhnen.

Die Pattern hier stammen aus Drupal6. Die sind zwar good-enough aber vollständig konform sind beide nicht. Die müsstest du dann aufbohren oder Wort für Wort vorgehen, was wohl nicht sehr performant sein dürfte.
 
Zuletzt bearbeitet:

Ähnliche Themen

Suchen und Ersetzen mit regulärem Ausdruck

CentOS 5.8 –SQL Abfrage– HTML wird generiert und daraus müssen mehrere Mails versendet werden

Erweiterbarer Wrapper für GNU find

html seite runterladen und die Inhalte als .txt-Date speichern

OpenJDK8 unter Debian7.11/sparc64/kernel 3.16 kompilieren

Zurück
Oben