Avatar billede voyager_dfs Nybegynder
26. februar 2005 - 17:44 Der er 11 kommentarer og
1 løsning

auto link

hej
ja hvordan skal de skrive...
hvis en bruger skriver f.eks:

hej med dig her er min hjemmeisde http://www.the-galaxy.dk/hest/php/pop.php :)

hvordan for jeg så det lavet om et
hej med dig her er min hjemmeisde www.the-galaxy.dk/he... :)
Avatar billede nisv Nybegynder
26. februar 2005 - 18:09 #1
Lidt uklart hvad du mener, men hvis du bare vil fjerne http:// fra url, så er det her en hurtig løsning:

<?php
$url = 'http://www.the-galaxy.dk/osvosv'; //den oprindelige url

$url = (strpos($url , 'http://') == 0) ? substr($url , 7) : $url;

?>

Hvis der står "http://" i starten af url, fjerner den http://, ellers lader den bare url være i fred.
Den kan selvfølgelig udvides til noget smartere.
Avatar billede voyager_dfs Nybegynder
26. februar 2005 - 18:46 #2
okey.... ikke helt det jeg var ude efter...
en bruger skriver i et textarea teksten "hej med dig her er min hjemmeisde http://www.the-galaxy.dk/hest/php/pop.php :)" den bliver så gem i en db så men inden da laver den det om så den gemmes som "hej med dig her er min hjemmeisde <a href="www.the-galaxy.dk/hes...</a>" target="_blank">http://www.the-galaxy.dk/hest/php/pop.php">www.the-galaxy.dk/hes...</a> :)"
med nu :)
Avatar billede nisv Nybegynder
26. februar 2005 - 18:56 #3
Okay, det er jo lidt noget andet.

Men taktikken er det samme. Brug strpos eller lign, til at identificere hvorvidt der indgår http:// (eller bare www...) i din tekststreng, og hvor. hvis ja, så identificer den pågældende stump af strengen og pak den i i '<a href="'.$stregen.'> før strpos for starten af url, og '</a>' ved strpos for enden af url.

Anyways, hvis det er et link uden for dit eget site skal du huske at smide en funktion på, der påtvinger at http:// sættes foran www.

Jeg før først tid til at lege med det imorgen, så det bliver nok ikke mig der giver dig noget brugbar kode :-)
Avatar billede voyager_dfs Nybegynder
26. februar 2005 - 19:09 #4
okey tror allerede det hjalp meget... vi får se ;)
Avatar billede voyager_dfs Nybegynder
26. februar 2005 - 21:12 #5
okey så har jeg leget lidt med det..men der er stadig et par huler.
f.eks hvis bruger'en ikke slutter et link med / og hvis en bruger har mere end et link i  sig tekste.
$text1 = 'hej glem ikke www.the-galaxy.dk/hest/php/pop.php :) ';
            $text = htmlentities($text1);
            $text = str_replace('<br />', '\n', $text);
            if (strpos($text1, 'http://')){
                $pos = strpos($text1, 'http://');
                $text2 = str_replace('http://', '', $text1);
                $pos2 = strpos(substr($text2, $pos), '/');
                $url = substr($text2, $pos, $pos2);
                if ($pos2 > '70'){
                    $url = substr($url, 0, 70)."...";
                }
                $text = preg_replace('/\s(http:\/\/)(\S+)/', ' <a href="\\1\\2">'.$url.'</a>', $text);
            }else{
                $pos = strpos($text1, 'www.');
                $pos2 = strpos(substr($text1, $pos), '/');
                $url = substr($text1, $pos, $pos2);
                if ($pos2 > '70'){
                    $url = substr($url, 0, 70)."...";
                }
                $text = preg_replace('/\s(www\.)(\S+)/', ' <a href="http://\\1\\2">'.$url.'</a>', $text);

            }
Avatar billede voyager_dfs Nybegynder
27. februar 2005 - 00:22 #6
okey.. har lige lavet en del om.. og nu vil jeg i seng
<?
$text1 = 'hej glem ikke http://www.the-galaxy.dk/hest/php/pop.php :) ';
            $text1 = htmlentities($text1);
            $text1 = str_replace('<br />', '\n', $text1);

                $pat = '/(?i)([^="])(http|ftp|irc|gopher:\/\/)([^ \n\r]+)(?=[\s\.,])/';
                preg_match($pat, substr($text1,3), $url, PREG_OFFSET_CAPTURE);

                $pat2 = '/([^ \n\r]+)(.dk)/';
                preg_match($pat2, substr($url[3][0],3), $url2, PREG_OFFSET_CAPTURE);
                echo '<pre>';
                print_r($url2);
                echo '</pre>';
               
                $text = preg_replace('/(?i)([^="])(http|ftp|gopher:\/\/)([^ \n\r]+)(?=[\s\.,])/', ' <a href="\\2\\3"> '.$url2[0][0].'</a>', $text1);

            echo '<br />';
            echo $text;

?>
Avatar billede voyager_dfs Nybegynder
01. marts 2005 - 16:59 #7
okey... har du noget jeg kan bruge får jeg kan simplehed ikke få det til at virke som jeg vil
Avatar billede nisv Nybegynder
01. marts 2005 - 23:10 #8
Hej - havde fået indtrykket at du havde fundet en løsning.

Her er min:

<?PHP
$string = 'hej her er en streng http://www.noget.dk der indeholder to links. www.noget.dk var det andet link uden http://';

$arr = explode(' ', $string); // split strengen op i elementer i et array
for ($i = 0 ; $i<count($arr) ; $i++) {
  if (strpos($arr[$i], 'http://') === 0) { // er der ord der starter med http://?
    if (strlen($arr[$i]) != 7){ //og er det mere end bare http://
      $arr[$i] = '<a href="'.$arr[$i].'" target="_blank">'.$arr[$i].'</a>';
    }
  }
  elseif (strpos($arr[$i], 'www') === 0) { // er der ord der starter med www?

    if (strlen($arr[$i]) != 3) { //og er det mere end bare
      $arr[$i] = '<a href="http://'.$arr[$i].'" target="_blank">'.$arr[$i].'</a>';
    }
  }
}

for ($i=0 ; $i<count($arr) ; $i++) { // lige sætte strengen sammen igen
    $nystring .= (next($arr) === false) ? $arr[$i] : $arr[$i].' ';
}
?>

De to checks med strlen skal du nok sysle lidt med, hvis du vil gøre det rigtig lækkert. Fx vil den nu undlade at betragte http:// som et link, men et punktum til sidst kan hurtigt ændre det (http://.)
Avatar billede voyager_dfs Nybegynder
02. marts 2005 - 18:08 #9
cool mange tak..
men.... lige en lille fix
$arr[$i] = '<a href="'.$arr[$i].'" target="_blank">'.$arr[$i].'</a>'; <-- sådan ;P

smider du lige et svar ? :D
Avatar billede nisv Nybegynder
02. marts 2005 - 18:20 #10
no prob

Kan dog ikke helt regne ud hvad du fixede, men jeg kan se at jeg lige i skyndingen har glemt at lukke $arr[$i] med ']' i den linie... :-)
Avatar billede voyager_dfs Nybegynder
02. marts 2005 - 19:38 #11
du glemte faktiske ].' :P
Avatar billede voyager_dfs Nybegynder
02. marts 2005 - 20:30 #12
okey... har lige fundet en lille bug.  hvis linket kommer lige efter et linje skift i et textarea bliver det ikke fundet. giver du fix'se det ? :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester