Avatar billede nielsgron Nybegynder
12. maj 2001 - 20:57 Der er 11 kommentarer og
3 løsninger

Smilie-billede i outputtet.

Jeg er ved at lave et forum i MySQL/PHP, og så har jeg et lille spørgsmål:
Hvordan laver jeg en funktion der gør, at når man skriver :) kommer der et smilie-billede?
Avatar billede BacceDK Juniormester
12. maj 2001 - 21:05 #1
$msg = str_replace(\":)\", \"<img src=\\\"images/smile.gif\\\">\", $msg);

indate
Avatar billede BacceDK Juniormester
12. maj 2001 - 21:06 #2
eller mere presist
$msg = str_replace(\":)\", \"<img src=\\\"sti til billede\\\">\", $msg);
Avatar billede mwittrock Nybegynder
12. maj 2001 - 21:10 #3
Du kan bruge PHP funktionen str_replace til at erstatte alle forekomster af \":)\" med et <IMG> tag:

str_replace(\":)\", \"<img src=\\\"/sti/til/smilie.gif\\\">\", $tekst)

Du kan læse mere om funktionen her:

http://www.php.net/manual/en/function.str-replace.php
Avatar billede mwittrock Nybegynder
12. maj 2001 - 21:12 #4
Hehe, det var vi nogenlunde enige om :)
Avatar billede nielsgron Nybegynder
13. maj 2001 - 20:40 #5
Hvis mit script ser ud som følger, hvordan skal det så tilpasses?

<?
  $result = mysql_query(\"SELECT *
                      FROM forum\")
                      or die(mysql_error());

  if (mysql_num_rows($result)) {

    while ($row = mysql_fetch_array($result))

    print \"$row[besked]<br><br>\";

    } else {

    }
?>

Forresten, hvordan laver jeg det sådan, så hvis der står etnavn@etdomæne.etefternavn, bliver det til <a href=\'mailto:etnavn@etdomæne.etefternavn\'>etnavn@etdomæne.etefternavn<a/>
???
Avatar billede BacceDK Juniormester
13. maj 2001 - 21:54 #6
hmm denne sætning laver dine mail adresser om til mailto:
$msg = ereg_replace(\"([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+[.]{1}[a-zA-Z0-9._-]+)\",\"<a href=\\\"mailto:\\\\1\\\">\\\\1</a>\",$msg);

meen hvordan du lige skal sætte det sammen på den måde der er jeg ik helt 100 på

indate
Avatar billede mwittrock Nybegynder
13. maj 2001 - 21:57 #7
nielsgron,

i kaldet:

str_replace(\":)\", \"<img src=\\\"/sti/til/smilie.gif\\\">\", $tekst)

skal du erstatte $tekst med den variabel, der indeholder selve beskeden. I dit konkrete tilfælde er det $row[besked], og slutresultatet bliver derfor:

str_replace(\":)\", \"<img src=\\\"/sti/til/smilie.gif\\\">\", $row[besked])

Avatar billede parazite Nybegynder
13. maj 2001 - 21:57 #8
<?
  $result = mysql_query(\"SELECT *
                      FROM forum\")
                      or die(mysql_error());

  if (mysql_num_rows($result)) {

    while ($row = mysql_fetch_array($result))
    $row[besked] = str_replace(\":)\", \"<img src=\\\"sti til billede\\\">\", $row[besked]);
$row[besked] = ereg_replace(\"([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+[.]{1}[a-zA-Z0-9._-]+)\",\"<a href=\\\"mailto:\\\\1\\\">\\\\1</a>\",$row[besked]);

print \"$row[besked]<br><br>\";

    } else {

    }

Burde virke... :)
?>

Avatar billede nielsgron Nybegynder
16. maj 2001 - 16:34 #9
>>Parazite:
Det virker ikke. Der kommer slet ikke noget output!
Avatar billede BacceDK Juniormester
16. maj 2001 - 17:05 #10
<?
  $result = mysql_query(\"SELECT *
                      FROM forum\")
                      or die(mysql_error());

  if (mysql_num_rows($result)) {

    while ($row = mysql_fetch_array($result))
$row[besked] = str_replace(\":)\", \"<img src=\\\"sti til billede\\\">\", $row[besked]);
$row[besked] = ereg_replace(\"([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+[.]{1}[a-zA-Z0-9._-]+)\",\"<a href=\\\"mailto:\\\\1\\\">\\\\1</a>\",$row[besked]);

    print \"$row[besked]<br><br>\";

    }
else {
echo \"fejl\";
    }
?>

hvis dette ik virker er det nogle af dine oplysninger som ikke er sat rigtigt, dette stykke script kører jeg selv flere steder så jeg ved det virker..

indate
Avatar billede BacceDK Juniormester
16. maj 2001 - 17:07 #11
hmm sorry der komme lige en rettelse :))

<?
  $result = mysql_query(\"SELECT *
                      FROM forum\")
                      or die(mysql_error());

  if (mysql_num_rows($result)) {

    while ($row = mysql_fetch_array($result)){
$row[besked] = str_replace(\":)\", \"<img src=\\\"sti til billede\\\">\", $row[besked]);
$row[besked] = ereg_replace(\"([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+[.]{1}[a-zA-Z0-9._-]+)\",\"<a href=\\\"mailto:\\\\1\\\">\\\\1</a>\",$row[besked]);

    print \"$row[besked]<br><br>\";
    }
    }
else {
echo \"fejl\";
    }
?>

sådan
indate
Avatar billede nielsgron Nybegynder
16. maj 2001 - 21:38 #12
Jeps. Nu virker det.
- Og så til pointene.
Da i alle tre har hjulpet ca. lige meget, skal i også have lige meget, men da man ikke kan dele 100 i tre hele mængder, bliver fordelingen som følger:
i får hver 30p, og så er de sidste 10p til den, der hurtigst, kan fortælle mig, hvordan jeg tilføjer en funktion der ligesom email-linket, laver et link til en webside, hvis den hedder \"http://xxx.xxx.xx\"
Ready set GOOOOO :)
Avatar billede mwittrock Nybegynder
16. maj 2001 - 22:29 #13
Den her burde fungere:

$row[besked] = ereg_replace(\"(http://[-.a-zA-Z0-9]+)\",\"<a href=\\\"\\\\1\\\">\\\\1</a>\", $row[besked]);

Den vil dog uden at blinke også lave http://...a.... om til et link, men det er relativt simpelt for dig at lave det regulære udtryk om, hvis det er et problem.
Avatar billede mwittrock Nybegynder
16. maj 2001 - 22:30 #14
Hehe Eksperten.dk faldt også for den :-)
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
Computerworld tilbyder specialiserede kurser i database-management

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