Avatar billede horizon Nybegynder
26. marts 2005 - 01:58 Der er 14 kommentarer og
1 løsning

Smileyer og links i mysql

vidste ikke helt hvordan jeg skulle formulere spørgsmålet, men sagen er:

Vi siger jeg har et nyhedsscript og hver gang jeg skriver :) så skal det erstattes med en smiley når det vises på den side hvor nyheden vises (håber I forstod det)

samme hvis jeg f.eks. skriver http://www.EnEllerAndenSide.dk og den så laver <a href="http://www.EnEllerAndenSide.dk">http://www.EnEllerAndenSide.dk</a>

Eller EnEllerAnden@MailAdresse.dk bliver til <a href="mailto: EnEllerAnden@MailAdresse.dk">EnEllerAnden@MailAdresse.dk</a>

Er der nogen mulighed for at lave det? I så fald hvordan?
Avatar billede bromer Nybegynder
26. marts 2005 - 02:05 #1
Ja.. det burde da være muligt. Først stjæler man et par funktioner fra razor.dk:

<?
function url2link($str) {
  return eregi_replace("((f|ht)tps?://)([a-z0-9@:%_.~#\-\?&-]+)((\=|[a-z0-9]|\?|&|\/|\.|-|:|æ|ø|å)+){0,}",
                      "<a href=\"\\0\">\\0</a>", $str);
}

function email2link($str) {
  return eregi_replace("^([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*)$",
                      "<a href=\"mailto:\\0\">\\0</a>", $str);
}

?>

og så kan du lave en til smileys
<?
function text2smiley($str) {
  $text[0] = ":)";
  $text[1] = ";)";
  $replace[0] = '<img src="pic1"/>';
  $replace[1] = '<img src="pic2"/>';
  return preg_replace($text,$replace,$str);

}
?>

så har du hele dit output ved <?
$str = 'din streng med ting';
echo url2link(email2link(text2smiley($str))):
?>
Avatar billede bromer Nybegynder
26. marts 2005 - 03:07 #2
jeg smider lige et svar, hvis du kan bruge mit forslag til noget.
Avatar billede horizon Nybegynder
28. marts 2005 - 01:26 #3
jeg har tilføjet 21 smileyer, men får denne fejlmeddelelse

Warning: No ending delimiter ':' found in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: No ending delimiter ';' found in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: No ending delimiter ':' found in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: No ending delimiter ';' found in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: No ending delimiter ':' found in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: No ending delimiter ':' found in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: Delimiter must not be alphanumeric or backslash in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: No ending delimiter ':' found in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: Delimiter must not be alphanumeric or backslash in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: No ending delimiter ':' found in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: No ending delimiter ':' found in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: No ending delimiter '?' found in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: No ending delimiter ':' found in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: Delimiter must not be alphanumeric or backslash in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: Delimiter must not be alphanumeric or backslash in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: Delimiter must not be alphanumeric or backslash in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: No ending delimiter ':' found in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: No ending delimiter ':' found in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: No ending delimiter ':' found in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: Delimiter must not be alphanumeric or backslash in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59

Warning: No ending delimiter ':' found in /mnt/dkcphnas003/www/t/y/thesimcity.dk/Brugeroplysninger/Erstatter.php on line 59


Her er Erstatter.php


<?php

function url2link($tekst) {
  return eregi_replace("((f|ht)tps?://)([a-z0-9@:%_.~#\-\?&-]+)((\=|[a-z0-9]|\?|&|\/|\.|-|:|æ|ø|å)+){0,}",
                      "<a href=\"\\0\">\\0</a>", $tekst);
}

function email2link($tekst) {
  return eregi_replace("^([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*)$",
                      "<a href=\"mailto:\\0\">\\0</a>", $tekst);
}

function text2smiley($tekst) {
  $text[0] = ":)";
  $text[1] = ";)";
  $text[2] = ":D";
  $text[3] = ";D";
  $text[4] = ":(";
  $text[5] = ":*";
  $text[6] = "8)";
  $text[7] = ":P";
  $text[8] = "0:)";
  $text[9] = ":@";
  $text[10] = ":|";
  $text[11] = "?:(";
  $text[12] = ":$";
  $text[13] = "D:)";
  $text[14] = "P:)";
  $text[15] = "Ha:)";
  $text[16] = ":/";
  $text[17] = ":O";
  $text[18] = ":X";
  $text[19] = "R:)";
  $text[20] = ":'(";
  $replace[0] = '<img src="../Billeder/Smileyer/smiley.gif"/>';
  $replace[1] = '<img src="../Billeder/Smileyer/wink.gif"/>';
  $replace[2] = '<img src="../Billeder/Smileyer/cheesy.gif"/>';
  $replace[3] = '<img src="../Billeder/Smileyer/grin.gif"/>';
  $replace[4] = '<img src="../Billeder/Smileyer/sad.gif"/>';
  $replace[5] = '<img src="../Billeder/Smileyer/kiss.gif"/>';
  $replace[6] = '<img src="../Billeder/Smileyer/cool.gif"/>';
  $replace[7] = '<img src="../Billeder/Smileyer/tongue.gif"/>';
  $replace[8] = '<img src="../Billeder/Smileyer/angel.gif"/>';
  $replace[9] = '<img src="../Billeder/Smileyer/angry.gif"/>';
  $replace[10] = '<img src="../Billeder/Smileyer/azn.gif"/>';
  $replace[11] = '<img src="../Billeder/Smileyer/huh.gif"/>';
  $replace[12] = '<img src="../Billeder/Smileyer/embarassed.gif"/>';
  $replace[13] = '<img src="../Billeder/Smileyer/evil.gif"/>';
  $replace[14] = '<img src="../Billeder/Smileyer/police.gif"/>';
  $replace[15] = '<img src="../Billeder/Smileyer/laugh.gif"/>';
  $replace[16] = '<img src="../Billeder/Smileyer/undecided.gif"/>';
  $replace[17] = '<img src="../Billeder/Smileyer/shocked.gif"/>';
  $replace[18] = '<img src="../Billeder/Smileyer/lipsrsealed.gif"/>';
  $replace[19] = '<img src="../Billeder/Smileyer/rolleyes.gif"/>';
  $replace[20] = '<img src="../Billeder/Smileyer/cry.gif"/>';
  return preg_replace($text,$replace,$tekst);

}
?>

den inkluderes på siden hvor smileyerne skal vises...

her er området som kalder funktionerne:

$nyhed = nl2br(url2link(email2link(text2smiley($tekst))));

Fatter ikke helt fejlen :S
Avatar billede horizon Nybegynder
28. marts 2005 - 01:26 #4
glemte lige at sige at email2link heller ikke virker, men url2link virker perfekt
Avatar billede bromer Nybegynder
28. marts 2005 - 01:28 #5
hvad er der galt med email2link?
Avatar billede horizon Nybegynder
28. marts 2005 - 01:29 #6
den laver det ikke om til et link, har været inde i kilden også, der viser den heller ikke noget med <a href=""> eller noget...
Avatar billede bromer Nybegynder
28. marts 2005 - 01:41 #7
Jeg har set lidt på koden når nu jeg har nogle smileys at arbejde med. Følgende kode virker:

<?php

function url2link($tekst) {
  return eregi_replace("((f|ht)tps?://)([a-z0-9@:%_.~#\-\?&-]+)((\=|[a-z0-9]|\?|&|\/|\.|-|:|æ|ø|å)+){0,}",
                      "<a href=\"\\0\">\\0</a>", $tekst);
}

function email2link($tekst) {
  return eregi_replace("^([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*)$",
                      "<a href=\"mailto:\\0\">\\0</a>", $tekst);
}

function text2smiley($tekst) {
  $text[0] = ":)";
  $text[1] = ";)";
  $text[2] = ":D";
  $text[3] = ";D";
  $text[4] = ":(";
  $text[5] = ":*";
  $text[6] = "8)";
  $text[7] = ":P";
  $text[8] = "0:)";
  $text[9] = ":@";
  $text[10] = ":|";
  $text[11] = "?:(";
  $text[12] = ":$";
  $text[13] = "D:)";
  $text[14] = "P:)";
  $text[15] = "Ha:)";
  $text[17] = ":O";
  $text[18] = ":X";
  $text[19] = "R:)";
  $text[16] = ":'(";
  $replace[0] = '<img src="../Billeder/Smileyer/smiley.gif"/>';
  $replace[1] = '<img src="../Billeder/Smileyer/wink.gif"/>';
  $replace[2] = '<img src="../Billeder/Smileyer/cheesy.gif"/>';
  $replace[3] = '<img src="../Billeder/Smileyer/grin.gif"/>';
  $replace[4] = '<img src="../Billeder/Smileyer/sad.gif"/>';
  $replace[5] = '<img src="../Billeder/Smileyer/kiss.gif"/>';
  $replace[6] = '<img src="../Billeder/Smileyer/cool.gif"/>';
  $replace[7] = '<img src="../Billeder/Smileyer/tongue.gif"/>';
  $replace[8] = '<img src="../Billeder/Smileyer/angel.gif"/>';
  $replace[9] = '<img src="../Billeder/Smileyer/angry.gif"/>';
  $replace[10] = '<img src="../Billeder/Smileyer/azn.gif"/>';
  $replace[11] = '<img src="../Billeder/Smileyer/huh.gif"/>';
  $replace[12] = '<img src="../Billeder/Smileyer/embarassed.gif"/>';
  $replace[13] = '<img src="../Billeder/Smileyer/evil.gif"/>';
  $replace[14] = '<img src="../Billeder/Smileyer/police.gif"/>';
  $replace[15] = '<img src="../Billeder/Smileyer/laugh.gif"/>';
  $replace[17] = '<img src="../Billeder/Smileyer/shocked.gif"/>';
  $replace[18] = '<img src="../Billeder/Smileyer/lipsrsealed.gif"/>';
  $replace[19] = '<img src="../Billeder/Smileyer/rolleyes.gif"/>';
  $replace[16] = '<img src="../Billeder/Smileyer/cry.gif"/>';
  $len = count($text);
  for ($i = 0;$i < $len;$i++) {
      $tekst = str_replace($text[$i],$replace[$i],$tekst);
  }
  return $tekst;
}
?>

som du så kan kalde med:

<?
$nyhed = nl2br(text2smiley(url2link(email2link($test))));
?>

Jeg har fjernet din :/ simley da den generede med http:// delen af et link. Og jeg har testet email2link funktionen og det fungerede helt fint.
Avatar billede horizon Nybegynder
28. marts 2005 - 02:05 #8
wee! nu virker smileyerne, men mailen virker stadig ikke... jeg skal vel kun skrive selve mailadressen eg. etellerandet@underligtnoget.dk?
Avatar billede bromer Nybegynder
28. marts 2005 - 02:09 #9
hov mig giver:

print email2link('etellerandet@underligtnoget.dk');

følgende output:

<a href="mailto:etellerandet@underligtnoget.dk">etellerandet@underligtnoget.dk</a>

Er det ikke godt nok?
Avatar billede horizon Nybegynder
28. marts 2005 - 02:12 #10
mit nyhedsscript gør bare noget underligt, hvis jeg laver en nyhed kun med mailen som indhold så virker det fint nok, men hvis jeg skriver noget derudover så virker det ikke
Avatar billede horizon Nybegynder
28. marts 2005 - 02:13 #11
fik det til, erstattede $ med {0,} i funktionen til sidst...
Avatar billede bromer Nybegynder
28. marts 2005 - 02:16 #12
du fik det til at virke?
Avatar billede horizon Nybegynder
28. marts 2005 - 02:23 #13
jepsen... så her får du dine point...
Avatar billede bromer Nybegynder
28. marts 2005 - 02:24 #14
tak tak
Avatar billede horizon Nybegynder
28. marts 2005 - 17:33 #15
hmm når jeg skriver en email adresse som noget af det første i mit nyhedsscript, så laver den det fint nok om til et link, men hvis den står midt inde i noget tekst så laver den det ikke om til et link, heller ikke hvis jeg skriver 2 emails i starten så er det kun den første som ændrer sig...
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