Avatar billede dotcom1 Nybegynder
25. februar 2005 - 16:25 Der er 4 kommentarer og
1 løsning

if else længde på streng

Jeg bruger følgende til at angive referer url, hvis der er en:

if (isset($_SERVER['HTTP_REFERER'])) {
    echo "<b>Oprindelse:</b> Den side, du kommer fra er:<br /><a class=\"orange\" href=\"".$_SERVER['HTTP_REFERER']."\" target=\"_blank\">".$_SERVER['HTTP_REFERER']."</a><br />";
}  else {
    echo "";
    }

Men: ofte kan sådanne referers være meget lange (hvis det fx er en søgning fra Google), så jeg har brugt følgende funktion til at forkorte strengen til max. 100:

function shorten($string, $num)
{
    if(strlen($string) > $num)
    {
          $temp  = substr( $string, 0, $num-2);
          $temp .= "...";
          return $temp;
    }
    else
          return $string;
}

    if (isset($_SERVER['HTTP_REFERER'])) {
        $string = "<b>Den side, du kom fra er:</b><br />".$_SERVER['HTTP_REFERER']."";
        echo (shorten($string, 100));
}

Det virker fint, men så kan referer url'en ikke længere gengives som link idet det sidste </a> skæres væk.

Kan man lave en funktion, der viser referer som link (selvom url'en er meget lang), men som synligt kun er fx. 100 chars lang?
Altså, så man ser fx. http://www.eksperten.dk/spm/75... mens linket reelt har url'en http://www.eksperten.dk/spm/75566/

Håber, det giver mening.

Alternativt, hvis det første er umuligt, kunne man måske lave en funktion, der viser refererlinks som i første eksempel hvis der er tale om en url under 100 anslag, og som forkorter en url der er over 100 anslag til en almindelig streng med ... til sidst.

Mvh.
Avatar billede coderdk Praktikant
25. februar 2005 - 16:44 #1
Hvad med:

if ( !empty( $_SERVER['HTTP_REFERER'] ) )
{
  $display = preg_replace( "/^(.{48}).*?(.{49})$/", "\\1...\\2", $_SERVER['HTTP_REFERER'] );
  echo "Du kommer fra <a href='" . $_SERVER['HTTP_REFERER'] . "'>$display</a>";
}

Den laver http://www.eksperten.dk/spm/75566/ om til http://www.eksper...pm/75566/

:)
Avatar billede dotcom1 Nybegynder
25. februar 2005 - 16:48 #2
Okay, ser godt ud. Men hvor bestemmer jeg antallet af chars? Er ikke rigtig sej til de hersens regulare udtryk... :)
Avatar billede dotcom1 Nybegynder
25. februar 2005 - 16:51 #3
Ah ok, ved hhv. 48 og 49... Det er en super løsning. Læg et svar, coderdk. :)
Avatar billede coderdk Praktikant
25. februar 2005 - 16:52 #4
Yes yes :D
Avatar billede dotcom1 Nybegynder
25. februar 2005 - 16:54 #5
Mange tak for hjælpen. :)
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