0) { $varpos++; } return $varpos; } function text_posr($strText,$strFind) { $varpos = strrpos($strText,$strFind); return $varpos; } function ntext_pos($strText,$strFind) { // ### starter ved postion 1 i stedet for 0. // ### gør ikke forskel på store og små bogstaver. $varpos = strpos(strtolower($strText),strtolower($strFind)); if ($varpos > 0) $varpos++; else $varpos = 0; if (strtolower(substr($strText,0,strlen($strFind))) == strtolower($strFind)) { $varpos = 1; } return $varpos; } function ntext_find_next($strText,$strStart,$strEnd) { // ### finder tekst i en tekst og slutter ved bestemt tekst. // Der bruges tegnet mellemrum ved tom stregn ellers er det ikke muligt at kende forskel på ikke fundet og tom streng. // Returnerer hele strengen hvis start eller slut ikke bliver fundet. // "" ved $strStart angiver at der startes fra starten af strengen. // "" ved $strEnd angiver at der sluttes ved slutningen af strengen. $error = FALSE; if ($strStart != "") { $varpos = strpos(strtolower($strText),strtolower($strStart)); if (!$varpos && strtolower(substr($strText,0,strlen("$strStart"))) != strtolower($strStart)) { $varText = $strText; $error = TRUE; } else { $varText = substr($strText,$varpos+strlen("$strStart")); } } else { $varText = $strText; } if ($strEnd != "") { $varpos = strpos(strtolower($varText),strtolower($strEnd)); if (strtolower(substr($varText,0,strlen("$strEnd"))) == strtolower($strEnd)) { //$varText = "empty string"; //$varText = ""; } else if (!$varpos) { $error = TRUE; } else if (!$error) { $varText = substr($varText,0,$varpos); } } return $varText; } function text_next($strText,$strStart) { // ### Finder tekst efter bestemt streng ### $error = FALSE; $varpos = strpos("$strText","$strStart"); if (!$varpos && substr($strText,0,strlen("$strStart")) != "$strStart") { $varText = $strText; $error = TRUE; } else { $varText = substr($strText,$varpos+strlen("$strStart")); if ($varText == "") { //$varText = "empty string"; $varText = " "; } } if ($error) return FALSE; else return $varText; } function text_nextr($strText,$strStart) { // ### Starter søgning fra slutningen af strengen. // ### Finder tekst efter bestemt streng ### // ### Der gøres ikke forskel på store og små bogstaver. // Returnerer hele strengen hvis start eller slut ikke bliver fundet. $error = FALSE; $varpos = strrpos(strtolower($strText),strtolower($strStart)); if (!$varpos && strtolower(substr($strText,0,strlen("$strStart"))) != strtolower($strStart)) { $varText = $strText; $error = TRUE; } else { $varText = substr($strText,$varpos+strlen("$strStart")); if ($varText == "") { //$varText = "empty string"; $varText = " "; } } if ($error) return FALSE; else return $varText; } 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) { // ### gør ikke forskel på store og små bogstaver. $varpos = strpos(strtolower($strText),strtolower($strFind)); if (substr(strtolower($strText),0,strlen($strFind)) == strtolower($strFind)) { $varpos = 0; } return $varpos; } function text_find_next($strText,$strStart,$strEnd) { // ### finder tekst i en tekst og slutter ved bestemt tekst. // Der bruges tegnet mellemrum ved tom stregn ellers er det ikke muligt at kende forskel på ikke fundet og tom streng. $error = FALSE; if ($strStart != "") { $varpos = strpos("$strText","$strStart"); if (!$varpos && substr($strText,0,strlen("$strStart")) != "$strStart") { $varText = ""; $error = TRUE; } else { $varText = substr($strText,$varpos+strlen("$strStart")); } } else { $varText = $strText; } if ($strEnd != "") { $varpos = strpos("$varText","$strEnd"); if (substr($varText,0,strlen("$strEnd")) == "$strEnd") { //$varText = "empty string"; $varText = " "; } else if (!$varpos) { $error = TRUE; } else if (!$error) { $varText = substr($varText,0,$varpos); } } if ($error) return FALSE; else return $varText; } function text_find($strText,$strFind) { // ### Finder ud af om tekst indeholder bestemt streng ### // ### Der gøres ikke forskel på store og små bogstaver. $varpos = strpos(strtolower($strText),strtolower($strFind)); if (!$varpos && strtolower(substr($strText,0,strlen("$strFind"))) != strtolower($strFind)) { return FALSE; } else { return TRUE; } } function text_links_start($strText2) { $tmp = $strText2; $end_tmppos = ntext_posr($tmp," "); $end_tmppos2 = ntext_posr($tmp,"\r\n"); $end_tmppos3 = ntext_posr($tmp,"\n"); $end_tmppos4 = ntext_posr($tmp,"<"); $end_tmppos5 = ntext_posr($tmp,">"); $end_tmppos6 = ntext_posr($tmp,"<"); $end_tmppos7 = ntext_posr($tmp,">"); $tmp = substr($tmp,0,$end_tmppos-1+strlen(" ")); $link = substr($strText2,$end_tmppos-1+strlen(" ")); if (substr($link,0,1) == " ") { $link = substr($link,1); $tmp = " ".$tmp; } if (($end_tmppos2 > 0) && ($end_tmppos == 0 || $end_tmppos < $end_tmppos2)) { $end_tmppos = $end_tmppos2; $tmp = substr($strText2,0,$end_tmppos+strlen("\r\n")-1); $link = substr($strText2,$end_tmppos-1+strlen("\r\n")); } if (($end_tmppos3 > 0) && ($end_tmppos == 0 || $end_tmppos < $end_tmppos3)) { $end_tmppos = $end_tmppos3; $tmp = substr($strText2,0,$end_tmppos+strlen("\n")-1); $link = substr($strText2,$end_tmppos-1+strlen("\n")); } if (($end_tmppos4 > 0) && ($end_tmppos == 0 || $end_tmppos < $end_tmppos4)) { $end_tmppos = $end_tmppos4; $tmp = substr($strText2,0,$end_tmppos-1+strlen("<")); $link = substr($strText2,$end_tmppos-1+strlen("<")); } if (($end_tmppos5 > 0) && ($end_tmppos == 0 || $end_tmppos < $end_tmppos5)) { $end_tmppos = $end_tmppos5; $tmp = substr($strText2,0,$end_tmppos-1+strlen(">")); if (substr($tmp,-2) == ">>") $tmp = substr($tmp,strlen($tmp)-3); $link = substr($strText2,$end_tmppos-1+strlen(">")); } if (($end_tmppos6 > 0) && ($end_tmppos == 0 || $end_tmppos < $end_tmppos6)) { $end_tmppos = $end_tmppos6; $tmp = substr($strText2,0,$end_tmppos-1+strlen("<")); $link = substr($strText2,$end_tmppos-1+strlen("<")); } if (($end_tmppos7 > 0) && ($end_tmppos == 0 || $end_tmppos < $end_tmppos7)) { $end_tmppos = $end_tmppos7; $tmp = substr($strText2,0,$end_tmppos-1+strlen(">")); $link = substr($strText2,$end_tmppos-1+strlen(">")); } return $tmp; } function text_links_end($strText2) { $tmppos = ntext_pos($strText2," "); $tmppos2 = ntext_pos($strText2,"\r\n"); $tmppos3 = ntext_pos($strText2,"\n"); $tmppos4 = ntext_pos($strText2,"<"); $tmppos5 = ntext_pos($strText2,">"); $tmppos6 = ntext_pos($strText2,"<"); $tmppos7 = ntext_pos($strText2,">"); $strend = " ".substr($strText2,$tmppos-1); if ($tmppos > 0) { $strend = ntext_find_next($strText2," ",""); $strend = " ".substr($strText2,$tmppos-1); } if ($tmppos == 0 || ($tmppos2 > 0 && $tmppos2 < $tmppos)) { $strend = ntext_find_next($strText2,"\r\n",""); $tmppos = $tmppos2; $strend = "\r\n".substr($strText2,$tmppos-1); //!!! -1 ? } if ($tmppos == 0 || ($tmppos3 > 0 && $tmppos3 < $tmppos)) { $strend = ntext_find_next($strText2,"\n",""); $tmppos = $tmppos3; //!!! -1 ? $strend = "\n".substr($strText2,$tmppos-1); } if ($tmppos == 0 || ($tmppos4 > 0 && $tmppos4 < $tmppos)) { $strend = ntext_find_next($strText2,"<",""); $tmppos = $tmppos4; // er i tvivl om det skal være: $strend = "<".substr($strText2,$tmppos-1); $strend = "".substr($strText2,$tmppos-1); } if ($tmppos == 0 || ($tmppos5 > 0 && $tmppos5 < $tmppos)) { $strend = ntext_find_next($strText2,">",""); $tmppos = $tmppos5; $strend = ">".substr($strText2,$tmppos-1); } if ($tmppos == 0 || ($tmppos6 > 0 && $tmppos6 < $tmppos)) { $strend = ntext_find_next($strText2,">",""); $tmppos = $tmppos6; $strend = substr($strText2,$tmppos-1); } if ($tmppos == 0 || ($tmppos7 > 0 && $tmppos7 < $tmppos)) { $strend = ntext_find_next($strText2,"<",""); $tmppos = $tmppos7; $strend = substr($strText2,$tmppos-1); } //$strend = substr($strText2,$tmppos-1); if ($tmppos == 0 && $tmppos2 == 0 && $tmppos3 == 0 && $tmppos4 == 0 && $tmppos5 == 0 && $tmppos6 == 0 && $tmppos7 == 0) { $strend = ""; } return $strend; if (ntext_pos($strText2,"\r\n") > 0) { //return $strend."\r\n"; //return "\r\n".$strend; } else if (ntext_pos($strText2,"\n") > 0) { //return $strend."\n"; //return "\n".$strend; } else { } } function notlink($strText) { // ### IPv4 adresser bliver godkendt som links. // ### man kunne tjekke om der er to punktummer efter hinanden før / og hvis der er så er det ikke et link. $letters2 = "abcdefghijklmnopqrstuvwxyz"; $islink = FALSE; $tmp2 = explode(".",$strText); if (ntext_pos($strText,"..") > 0 && !text_find($strText,"/")) { $islink = FALSE; } else if (count($tmp2) == 4) { $islink = TRUE; } else { for ($i_explode=0;$i_explode") || text_find($text_array[$i_all],"\n") || text_find($text_array[$i_all],"\r\n") || text_find($text_array[$i_all],"<") || text_find($text_array[$i_all],">")) { $links_end[] = $i_all; $endoflink = $i_all; } } } $this_is_startoflink = FALSE; $endoflink = 0; $link_found = FALSE; } $links_start = array(); $links_end = array(); foreach($links_found AS $found) { for ($i_all2=$found-1;$i_all2>=0;$i_all2--) { $tmp = $text_array[$i_all2]; if (text_find($tmp," ") || text_find($tmp,"<") || text_find($tmp,">") || text_find($tmp,"\n") || text_find($tmp,"\r\n") || text_find($tmp,"<") || text_find($tmp,">")) { $links_start[$i_all2] = $i_all2; // ### der skal ikke være +1. $links_end[$i_all2] = $found; $i_all2 = -1; } } } $link_started = FALSE; $links_list = array(); for ($i=0;$i"); $textafter = ntext_find_next($textafter,"","<"); $textafter = ntext_find_next($textafter,"",">"); $link .= ".".$textafter; $atend2 = ""; $atend3 = ""; //der kan godt være ) efter link uden at der er ( før linket. if (substr($link,-1) == ")") { $link = substr($link,0,strlen($link)-1); $atend3 = ")"; } // ### hvis et link starter med [, " eller ( så antages det at linket starter derefter. if (substr($link,0,1) == "[") { $vartext .= "["; $link = substr($link,1); if (substr($link,-1) == "]") { $link = substr($link,0,strlen($link)-1); $atend2 = "]"; } } else if (substr($link,0,1) == "(") { $vartext .= "("; $link = substr($link,1); } else if (substr($link,0,1) == "\"") { $vartext .= "\""; $link = substr($link,1); if (substr($link,-1) == "\"") { $link = substr($link,0,strlen($link)-1); $atend2 = "\""; } } $atend = ""; if (substr($link,-1) == "," || substr($link,-1) == "." || substr($link,-1) == "?" || substr($link,-1) == ":" || substr($link,-1) == ";") { $atend = substr($link,-1); $link = substr($link,0,strlen($link)-1); } if (notlink($link)) $vartext .= $link; else if (in_array(strtolower($link),$not_links)) $vartext .= $link; else if (strtolower(substr($link,0,5)) == "news:") $vartext .= "$link"; else if (strpos($link,"@") > 0 || filter_var($link, FILTER_VALIDATE_EMAIL)) { if (substr(strtolower($link),7) == "mailto:") $link = substr($link,7); $vartext .= "$link"; //if (!in_array($link,$list_emails)) //$list_emails[] = $link; } else if (strtolower(substr($tmp,0,1)) == ">" && strtolower(substr($tmp,-4)) != "
" && strtolower(substr($tmp,-3)) != "" && strtolower(substr($tmp,-3)) != "") { $vartext .= "$link"; } else if (strpos(strtolower($tmp),"$link"; else if (strtolower(substr($link,0,8)) == "https://") $vartext .= "$link"; else if (strtolower(substr($link,0,6)) == "ftp://") $vartext .= "$link"; else if (strtolower(substr($link,0,4)) == "www.") $vartext .= "$link"; else { $vartext .= "$link"; } $vartext .= $atend; $vartext .= $atend2 . $atend3; $link_started = FALSE; if (!in_array($link,$links_list)) $links_list[] = $link; } if (in_array($i, $links_start)) { $tmppos = ntext_posr($text_array[$i]," "); $tmppos2 = ntext_posr($text_array[$i],"\r\n"); $tmppos3 = ntext_posr($text_array[$i],"\n"); $tmppos4 = ntext_posr($text_array[$i],"<"); $tmppos5 = ntext_posr($text_array[$i],">"); $tmppos6 = ntext_posr($text_array[$i],"<"); $tmppos7 = ntext_posr($text_array[$i],">"); if ($tmppos2 > 0 && $tmppos < $tmppos2) $tmppos = $tmppos2; if ($tmppos3 > 0 && $tmppos < $tmppos3) $tmppos = $tmppos3; if ($tmppos4 > 0 && $tmppos < $tmppos4) $tmppos = $tmppos4; if ($tmppos5 > 0 && $tmppos < $tmppos5) $tmppos = $tmppos5; if ($tmppos6 > 0 && $tmppos < $tmppos6) $tmppos = $tmppos6; if ($tmppos7 > 0 && $tmppos < $tmppos7) $tmppos = $tmppos7; // ### finder end $tmp = ($text_array[$i]); $end_tmppos = ntext_posr($tmp," "); $end_tmppos2 = ntext_posr($tmp,"\r\n"); $end_tmppos3 = ntext_posr($tmp,"\n"); $end_tmppos4 = ntext_posr($tmp,"<"); $end_tmppos5 = ntext_posr($tmp,">"); $end_tmppos6 = ntext_posr($tmp,"<"); $end_tmppos7 = ntext_posr($tmp,">"); $tmp = substr($tmp,0,$end_tmppos-1+strlen(" ")); $link = substr($text_array[$i],$end_tmppos-1+strlen(" ")); if (substr($link,0,1) == " ") { $link = substr($link,1); $tmp = " ".$tmp; } if (($end_tmppos2 > 0) && ($end_tmppos == 0 || $end_tmppos < $end_tmppos2)) { $end_tmppos = $end_tmppos2; $tmp = substr($text_array[$i],0,$end_tmppos-1+strlen("\r\n")); $link = substr($text_array[$i],$end_tmppos-1+strlen("\r\n")); } if (($end_tmppos3 > 0) && ($end_tmppos == 0 || $end_tmppos < $end_tmppos3)) { $end_tmppos = $end_tmppos3; $tmp = substr($text_array[$i],0,$end_tmppos-1+strlen("\n")); $link = substr($text_array[$i],$end_tmppos-1+strlen("\n")); } if (($end_tmppos4 > 0) && ($end_tmppos == 0 || $end_tmppos < $end_tmppos4)) { $end_tmppos = $end_tmppos4; $tmp = substr($text_array[$i],0,$end_tmppos-1+strlen("<")); $link = substr($text_array[$i],$end_tmppos-1+strlen("<")); } if (($end_tmppos5 > 0) && ($end_tmppos == 0 || $end_tmppos < $end_tmppos5)) { $end_tmppos = $end_tmppos5; $tmp = substr($text_array[$i],0,$end_tmppos-1+strlen(">")); $link = substr($text_array[$i],$end_tmppos-1+strlen(">")); } if (($end_tmppos6 > 0) && ($end_tmppos == 0 || $end_tmppos < $end_tmppos6)) { $end_tmppos = $end_tmppos6; $tmp = substr($text_array[$i],0,$end_tmppos-1+strlen("<")); $link = substr($text_array[$i],$end_tmppos-1+strlen("<")); } if (($end_tmppos7 > 0) && ($end_tmppos == 0 || $end_tmppos < $end_tmppos7)) { $end_tmppos = $end_tmppos7; $tmp = substr($text_array[$i],0,$end_tmppos-1+strlen(">")); $link = substr($text_array[$i],$end_tmppos-1+strlen(">")); } // ### finder slutningen af strengen. $begin_tmppos = ntext_pos($tmp," "); $begin_tmppos2 = ntext_pos($tmp,"\r\n"); $begin_tmppos3 = ntext_pos($tmp,"\n"); $begin_tmppos4 = ntext_pos($tmp,"<"); $begin_tmppos5 = ntext_pos($tmp,">"); $begin_tmppos6 = ntext_pos($tmp,"<"); $begin_tmppos7 = ntext_pos($tmp,">"); $tmp2 = $tmp; $tmp = substr($tmp2,$begin_tmppos-1); if ($begin_tmppos2 > 0 && $begin_tmppos > $begin_tmppos2) { $begin_tmppos = $begin_tmppos2; $tmp = substr($tmp2,$begin_tmppos-1); } if ($begin_tmppos3 > 0 && $begin_tmppos > $begin_tmppos3) { $begin_tmppos = $begin_tmppos3; $tmp = substr($tmp2,$begin_tmppos-1); } if ($begin_tmppos4 > 0 && $begin_tmppos > $begin_tmppos4) { $begin_tmppos = $begin_tmppos4; $tmp = substr($tmp2,$begin_tmppos-1); } if ($begin_tmppos5 > 0 && $begin_tmppos > $begin_tmppos5) { $begin_tmppos = $begin_tmppos5; $tmp = substr($tmp2,$begin_tmppos-1); } if ($begin_tmppos6 > 0 && $begin_tmppos > $begin_tmppos6) { $begin_tmppos = $begin_tmppos6; $tmp = substr($tmp2,$begin_tmppos-1); } if ($begin_tmppos7 > 0 && $begin_tmppos > $begin_tmppos7) { $begin_tmppos = $begin_tmppos7; $tmp = substr($tmp2,$begin_tmppos-1); } //### skal kunne stoppe ved de givne tegn. //$link = substr($text_array[$i],$tmppos); $link_started = TRUE; if (in_array($i, $links_start) && in_array($i, $links_end)) { //$vartext .= "(midten)". text_links_start(text_links_end($text_array[$i])) . "(/midten)"; $vartext .= "". text_links_start(text_links_end($text_array[$i])) . ""; } else if (in_array($i, $links_start)) { //$vartext .= ".(start)". $text_array[$i] . "(/start)"; $vartext .= ".". $tmp2 . ""; } } else { if ($link_started) { $link .= ".".$text_array[$i]; } else { if (in_array($i, $links_end)) { $tmppos = ntext_pos($text_array[$i]," "); $tmppos2 = ntext_pos($text_array[$i],"\r\n"); $tmppos3 = ntext_pos($text_array[$i],"\n"); $tmppos4 = ntext_pos($text_array[$i],"<"); $tmppos5 = ntext_pos($text_array[$i],">"); $tmppos6 = ntext_pos($text_array[$i],"<"); $tmppos7 = ntext_pos($text_array[$i],">"); if (($tmppos2 > 0) && ($tmppos == 0 || $tmppos > $tmppos2)) $tmppos = $tmppos2; if (($tmppos3 > 0) && ($tmppos == 0 || $tmppos > $tmppos3)) $tmppos = $tmppos3; if (($tmppos4 > 0) && ($tmppos == 0 || $tmppos > $tmppos4)) $tmppos = $tmppos4; if (($tmppos5 > 0) && ($tmppos == 0 || $tmppos > $tmppos5)) $tmppos = $tmppos5; if (($tmppos6 > 0) && ($tmppos == 0 || $tmppos > $tmppos6)) $tmppos = $tmppos6; if (($tmppos7 > 0) && ($tmppos == 0 || $tmppos > $tmppos7)) $tmppos = $tmppos7; $tmp = substr($text_array[$i],$tmppos-1); //$tmp = strpos($text_array[$i],"\r\n"); if ($tmppos == 0 && $tmppos2 == 0 && $tmppos3 == 0 && $tmppos4 == 0 && $tmppos5 == 0 && $tmppos6 == 0 && $tmppos7 == 0) { $tmp = ""; } //$tmp = text_links_end($text_array[$i]); // ### end"; //$vartext .= "(end)". $text_array[$i] . "(/end)"; $vartext .= "". $tmp . ""; } else { $vartext .= ".".$text_array[$i] .""; } } } } return substr($vartext,3); } //$text = "Dette er en tekst. Med adresser w1234.www2.22dr.net der kan også Stå www.dr.info. Der kan stå tv2.com eller noget andet. Mvh"; //$text = ""; if (false) { $text = "dr.dk det (link test.dk [127.0.0.1]) går ikke med .net der kan godt post.nr. skrives f.eks. uden at det bliver til link men 1234.dk bliver til link. 1234@1234.dk 10.10.2013 er 11.11.11.dk Det her en URL HTTP://www.dr.dk/Nyheder/Politik/2013/11/04/140341.htm>.skal 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 ftp://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\nhttp://dr.dk det er det sidste link. Prøver lige lidt mere \"dr.dk\" og (dr.dk) Mvh. Christoffer\n\n

Et link dr.dk ser hvordan det ser ud. dr.dk endnu et link

\nhttp://www.google.dk?q=links
dr.dk
Billede "; echo "Oprindelig tekst:
"; echo $text . "

"; echo "Resultat:
"; echo IntoAllLinks("$text"); } ?>