Der var lige en rettelse. Hvis der er en der ved hvordan man får gjort så adresser uden www. http:// https:// og ftp:// foran også kommer med, så giv lige besked. Det kan f.eks. være der står dr.dk eller wikipedia.org eller google.dk. Det gør ikke noget hvis mailadresser også bliver lavet om til links, så skal der bare være mailto: foran.
<?php
$text = "Det her er en URL
HTTP://www.dr.dk/Nyheder/Politik/2013/11/04/140341.htm.<b>skal</b> testes. Her er endnu et link
www.tv2.dk. Det samme link igen:
http://www.dr.dk/Nyheder/Politik/2013/11/04/140341.htm. Der kan være denne adresse
FTP://www.servernavn-adresse.dk/filnavn.pdf Der kan også være
http://www.dr.dk/tv/ eller
http://dr.dk\nftp://192.168.0.1. Der kan også være
http://192.168.0.1/ https://192.168.0.1/ www.dr.dk man kan godt skrive www og www. eller ftp:// der kan skrives med store bogstaver
FTP://192.168.0.1 Ftp://192.168.0.1 ftp://192.168.0.1 http://dr.dk det er det sidste link.";
//$text = "
http://dr.dk\r\n";//$text = "
http://www.dr.dk.";//$text = "Tekst uden links.";
function text_pos($strText,$strFind) {
$varpos = strpos($strText,"$strFind");
if (substr($strText,0,strlen($strFind)) == "$strFind") {
$varpos = 0;
}
return $varpos;
}
function text_pos2($strText,$strFind) {
// denne funktion søger efter lower case tekst
$varpos = strpos(strtolower($strText),strtolower($strFind));
if (substr(strtolower($strText),0,strlen($strFind)) == strtolower($strFind)) {
$varpos = 0;
}
return $varpos;
}
function text_find($strText,$strFind) {
// ### Finder ud af om tekst indeholder bestemt streng ###
$varpos = text_pos2("$strText","$strFind");
if (!$varpos && substr(strtolower($strText),0,strlen("$strFind")) != strtolower($strFind)) {
return FALSE;
}
else {
return TRUE;
}
}
function IntoLinks($s) {
// ### Denne funktion finder kun første link!
// ### Adresser der starter med følgende
// ### bliver lavet om til links:
//
// www.
// http://
// https://
// ftp://
// Der er fjernelse af punktum hvis der står det i enden af adresse.
$vartemp = "";
$found_more_links = TRUE;
$counter = 0;
while ($found_more_links) {
$varpos = text_pos2($s,"www.");
if (text_pos2($s,"
http://") > 0 && (text_pos2($s,"
http://") < $varpos || $varpos == 0 || $varpos === FALSE))
$varpos = text_pos2($s,"
http://");
if (text_pos2($s,"
https://") > 0 && (text_pos2($s,"
https://") < $varpos || $varpos == 0 || $varpos === FALSE))
$varpos = text_pos2($s,"
https://");
if (text_pos2($s,"
ftp://") > 0 && (text_pos2($s,"
ftp://") < $varpos || $varpos == 0 || $varpos === FALSE))
$varpos = text_pos2($s,"
ftp://");
$textbefore = substr($s,0,$varpos);
$textafter = substr($s,$varpos);
$endpos1 = text_pos2($textafter," ");
$endpos2 = text_pos2($textafter,"\r\n");
$endpos3 = text_pos2($textafter,"\n");
$endpos4 = text_pos2($textafter,"<");
$endpos5 = text_pos2($textafter,">");
$endpos6 = text_pos2($textafter,"<");
$endpos7 = text_pos2($textafter,">");
$endpos = $endpos1;
if ($endpos2 !== FALSE) {
if ($endpos2 !== FALSE && ($endpos === FALSE || $endpos2 < $endpos)) {
$endpos = $endpos2;
}
}
if ($endpos3 !== FALSE) {
if ($endpos3 !== FALSE && ($endpos === FALSE || $endpos3 < $endpos)) {
$endpos = $endpos3;
}
}
if ($endpos4 !== FALSE) {
if ($endpos4 !== FALSE && ($endpos === FALSE || $endpos4 < $endpos)) {
$endpos = $endpos4;
}
}
if ($endpos5 !== FALSE) {
if ($endpos5 !== FALSE && ($endpos === FALSE || $endpos5 < $endpos)) {
$endpos = $endpos5;
}
}
if ($endpos6 !== FALSE) {
if ($endpos6 !== FALSE && ($endpos === FALSE || $endpos6 < $endpos)) {
$endpos = $endpos6;
}
}
if ($endpos7 !== FALSE) {
if ($endpos7 !== FALSE && ($endpos === FALSE || $endpos7 < $endpos)) {
$endpos = $endpos7;
}
}
if ($endpos === FALSE)
$endpos = strlen($textafter);
if ($endpos !== FALSE) {
if (substr($textafter,0,7) == "
http://") {
$lastchar = substr(substr($textafter,0,$endpos),-1);
if ($lastchar == "." || $lastchar == ",") {
$endpos = $endpos-1;
}
$link = "<a href=\"".substr($textafter,0,$endpos)."\" target=_blank>".substr($textafter,0,$endpos)."</a>";
}
else if (substr($textafter,0,6) == "
ftp://") {
$lastchar = substr(substr($textafter,0,$endpos),-1);
if ($lastchar == "." || $lastchar == ",") {
$endpos = $endpos-1;
}
$link = "<a href=\"".substr($textafter,0,$endpos)."\" target=_blank>".substr($textafter,0,$endpos)."</a>";
}
else if (substr($textafter,0,8) == "
https://") {
$lastchar = substr(substr($textafter,0,$endpos),-1);
if ($lastchar == "." || $lastchar == ",") {
$endpos = $endpos-1;
}
$link = "<a href=\"".substr($textafter,0,$endpos)."\" target=_blank>".substr($textafter,0,$endpos)."</a>";
}
else if (substr($textbefore,-7) == "
http://") {
$textbefore = substr($s,0,$varpos-7);
$textafter = "
http://".substr($s,$varpos);
$endpos = $endpos+7;
$lastchar = substr(substr($textafter,0,$endpos),-1);
if ($lastchar == "." || $lastchar == ",") {
$endpos = $endpos-1;
}
$link = "<a href=\"".substr($textafter,0,$endpos)."\" target=_blank>".substr($textafter,0,$endpos)."</a>";
}
else if (substr($textbefore,-8) == "
https://") {
$textbefore = substr($s,0,$varpos-8);
$textafter = "
https://".substr($s,$varpos);
$endpos = $endpos+8;
$lastchar = substr(substr($textafter,0,$endpos),-1);
if ($lastchar == "." || $lastchar == ",") {
$endpos = $endpos-1;
}
$link = "<a href=\"".substr($textafter,0,$endpos)."\" target=_blank>".substr($textafter,0,$endpos)."</a>";
}
else if (substr($textbefore,-6) == "
ftp://") {
$textbefore = substr($s,0,$varpos-6);
$textafter = "
ftp://".substr($s,$varpos);
$endpos = $endpos+6;
$lastchar = substr(substr($textafter,0,$endpos),-1);
if ($lastchar == "." || $lastchar == ",") {
$endpos = $endpos-1;
}
$link = "<a href=\"".substr($textafter,0,$endpos)."\" target=_blank>".substr($textafter,0,$endpos)."</a>";
}
else {
$lastchar = substr(substr($textafter,0,$endpos),-1);
if ($lastchar == "." || $lastchar == ",") {
$endpos = $endpos-1;
}
if (substr($textafter,0,7) == "
http://") {
$link = "<a href=\"".substr($textafter,0,$endpos)."\" target=_blank>".substr($textafter,0,$endpos)."</a>";
}
else if (substr($textafter,0,8) == "
https://") {
$link = "<a href=\"".substr($textafter,0,$endpos)."\" target=_blank>".substr($textafter,0,$endpos)."</a>";
}
else if (substr($textafter,0,6) == "
ftp://") {
$link = "<a href=\"".substr($textafter,0,$endpos)."\" target=_blank>".substr($textafter,0,$endpos)."</a>";
}
else if (substr($textafter,0,4) == "www.") {
$link = "<a href=\"
http://".substr($textafter,0,$endpos)."\" target=_blank>".substr($textafter,0,$endpos)."</a>";
}
else {
$link = substr($textafter,0,$endpos);
}
}
$textafter = substr($textafter,$endpos);
if (text_find($textafter,"www.") || text_find($textafter,"
http://") || text_find($textafter,"
https://") || text_find($textafter,"
ftp://")) {
// ### finder resten af adresserne
$vartemp = $vartemp . $textbefore . $link;
$s = ($textafter);
}
else {
$vartemp = $vartemp . $textbefore . $link . $textafter;
$found_more_links = FALSE;
}
}
else {
if (substr($textbefore,-7) == "
http://" || substr($textbefore,-8) == "
https://" || substr($textbefore,-6) == "
ftp://") {
if (substr($textbefore,-7) == "
http://") {
$link = "<a href=\"".substr($textafter,0)."\" target=_blank>".substr($textafter,0)."</a>";
}
else if (substr($textbefore,-6) == "
ftp://") {
$link = "<a href=\"".substr($textafter,0)."\" target=_blank>".substr($textafter,0)."</a>";
}
else if (substr($textbefore,-8) == "
https://") {
$link = "<a href=\"".substr($textafter,0)."\" target=_blank>".substr($textafter,0)."</a>";
}
}
else {
$link = "<a href=\"
http://".substr($textafter,0)."\" target=_blank>".substr($textafter,0)."</a>";
}
$textafter = substr($textafter,$endpos);
$vartemp = $vartemp . $textbefore . $link;
$found_more_links = FALSE;
}
if ($counter > 99) {
// denne counter er kun indsat for at stoppe scriptet hvis der er fejl.
$found_more_links = FALSE;
}
$counter++;
}
return $vartemp;
}
function htmlencode($str_text) {
$tmp_text = str_replace("<", "<", "$str_text");
$tmp_text = str_replace(">", ">", "$tmp_text");
return $tmp_text;
}
echo htmlencode(IntoLinks(htmlencode($text))) . "<br><br>";
echo IntoLinks(htmlencode($text));
?>