Links und E-Mail Adressen klickbar machen
Mit einer einfachen Funktion kannst du die Links und E-Mail Adressen erkennen und zu anklickbaren Links umwandeln.
Du hast zum Beispiel einen langen Text, der Links und E-Mail Adressen beinhaltet. Diese werden beim Durchlaufen dieser genialen Funktion automatisch in anklickbare Texte verwandelt. Das kann man gut in Foren oder Gästebucheinträgen brauchen.
<?php
function makeLink($string) {
$string = str_replace("http://www.","www.", $string);
$string = str_replace("www.","http://www.", $string);
$string = preg_replace('/([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[\.a-zA-ZöÖüÜäÄ0-9-]+\.([a-zA-Z]{2,5}))/', 'mailto:$1', $string);
$url_patterns = array(
'http' => "(?:https?://(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?)(?:/(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&=])*)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&=])*))*)(?:\?(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&=])*))?)?)",
'ftp' => "(?:ftp://(?:(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;?&=])*)(?::(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;?&=])*))?@)?(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?))(?:/(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[?:@&=])*)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[?:@&=])*))*)(?:;type=[AIDaid])?)?)",
'mailto' => "(?:mailto:(?:(?:[a-zA-Z\d$\-_.+!*'(),;/?:@&=]|(?:%[a-fA-F\d]{2}))+))"
);
$pattern = '/(' . addcslashes($url_patterns['http'], chr(0x2F)) . '|' . addcslashes($url_patterns['ftp'], chr(0x2F)) . '|' . addcslashes($url_patterns['mailto'], chr(0x2F)) . ')/';
$string = preg_replace($pattern, "<a href=\"\\1\">\\1</a>", $string);
return $string;
}
$text = "Das ist ein langer Text der mehrere Links http://google.com, www.google.com, eine FTP Adresse ftp://google.com und eine E-Mail Adresse name@googlemail.com enthält.";
echo "<h3>Originaler Text:</h3><p>".$text."</p>";
echo "<hr />";
echo "<h3>Text mit klickbaren Links und E-Mail Adressen</h3><p>".makeLink($text)."</p>";
?>
- Donnerstag, 23 Juni 2011
- Posted in: String Funktionen

Kommentare (0)