Avatar billede straszek Praktikant
20. august 2003 - 17:10 Der er 7 kommentarer og
1 løsning

udskift tekststreng

Jeg har en side hvor bruger kan oprette nyheder, det virker fint, men nu vil de også gerne kunne tilknytte billeder til nyhederne.

Kan det laves sådan at brugerne i teksten bare kan skrive f.eks. <fisk.jpg align=left> og det så når teksten kaldes frem bliver 'oversat' til <img src=grafik/fisk.jpg align=left> - og hvordan gøres det?


Søren
Avatar billede squashguy Nybegynder
20. august 2003 - 17:15 #1
$str = "<fisk.jpg align=left>";
$str = preg_replace("/<([^ ]+) *([^ ]+)>/", "<img src=\"$1\" $2>", $str);
Avatar billede straszek Praktikant
20. august 2003 - 17:28 #2
Den er jeg ikke helt med på - hvad er $1 & $2 ?
Avatar billede squashguy Nybegynder
20. august 2003 - 17:28 #3
$1 henviser til filenavn, $2 henviser til align=left
Avatar billede squashguy Nybegynder
20. august 2003 - 17:29 #4
det er pga de to parenteser i udtrykket. første parentes er $1, ...
Avatar billede straszek Praktikant
20. august 2003 - 17:44 #5
Jeg kan ikke få det til at virker, jeg forsøge at integere ovenstående i nedenstående funktion, der indsætte <br> m.m.

JEg har gjort som følger:
<?

function string_tagster($str) {

        $str = " ".$str." ";

        $str = eregi_replace("([[:space:]{()\"'\[~#=;\&?\_-])((ftp|http|https|telnet|news|nttp|nntp|file):\/\/[a-z0-9~#%@¾¿Œ\&\(\):;=\?\/\.,_-]+(\\[|\\]|[a-z0-9~#%@¾¿Œ\&:;,=\?\/_\+-])+)", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $str);

        $str = eregi_replace("([[:space:]{()\"'\[~#=;\&?\_-])(www\.[a-z0-9~#%@¾¿Œ\&\(\):;=\?\/\.,_-]+(\\[|\\]|[a-z0-9~#%@¾¿Œ\&:;,=\?\/_\+-])+)", "\\1<a href=\"http://\\2\" target=\"_top\">\\2</a>", $str);

        $str = eregi_replace("([[:space:]{()\"'\[~#=;\&?\_-])([_\.0-9a-z-]+@([_\.0-9a-z-]+)+\.[a-z]{2,4})","\\1<a href=\"mailto:\\2\">\\2</a>", $str);

        preg_replace("/<([^ ]+) *([^ ]+)>/", "<img src=\"$1\" $2>", $str);
       
        return substr($str, 1);

    }



    function format_post2 ($str) {

        $str = stripslashes($str);

        $str = string_tagster($str);

        $str = str_replace("  ", "&nbsp; ", $str);

        $str = str_replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;", $str);

        $str = str_replace("\r", "", $str);

        $str = str_replace("\n", "<br>", $str);

       

        return $str;

    }

?>

Og fra en side kalder jeg overnsåtende funtkion med

echo  format_post2 ($tekst);

hvor $tekst et et db udtræk. Det virker ikke billedet bliver ikke vist.


Søren
Avatar billede squashguy Nybegynder
20. august 2003 - 17:56 #6
preg_replace("/<([^ ]+) *([^ ]+)>/", "<img src=\"$1\" $2>", $str);

returnerer den ændrede streng, så det skal være

$str = preg_replace("/<([^ ]+) *([^ ]+)>/", "<img src=\"$1\" $2>", $str);
Avatar billede squashguy Nybegynder
20. august 2003 - 17:57 #7
når du nu bruger ereg de andre stedet, så brug

$str = ereg_replace("<([^ ]+) *([^ ]+)>", "<img src=\"$1\" $2>", $str);
Avatar billede straszek Praktikant
20. august 2003 - 17:59 #8
cool, takker...........
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