Avatar billede baronen20 Nybegynder
18. februar 2003 - 13:23 Der er 6 kommentarer og
1 løsning

Problemer med funktion og løkke

Jeg har nogle problemer med at køre en funktion gennem en løkke.

Jeg laver et database udtræk således;

while ($row = mysql_fetch_array($query)) {
$besked = nl2br($row[tekst]);
include("includes/tagster.php");
echo $besked;
}

...men får beskeden:
Fatal error: Cannot redeclare string_tagster() (previously declared in tagster.php:2) in tagster.php on line 2
Avatar billede baronen20 Nybegynder
18. februar 2003 - 13:24 #1
tagster.php indeholder:

<?
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\" class=\"black\">\\2</A>", $str);
$str = eregi_replace("([[:space:]{()\"'\[~#=;\&?\_-])(www\.[a-z0-9~#%@\&\(\):;=\?\/\.,_-]+[a-z0-9~#%@\&:;,=\?\/_\+-]+)", "\\1<A HREF=\"http://\\2\" TARGET=\"_blank\" class=\"black\">\\2</A>", $str);
$str = eregi_replace("([_\.0-9a-z-]+@([0-9a-z-]+)+\.[a-z]{2,4})","<A HREF=\"mailto:\\1\" class=\"black\">\\1</A>", $str);
return substr($str, 1);
}
$en_streng = "$besked";
$besked = string_tagster($en_streng);
$besked = str_replace(':)','<img src="img/smiley1.gif" align="absmiddle">', $besked);
$besked = str_replace(':(','<img src="img/smiley2.gif" align="absmiddle">', $besked);
$besked = str_replace(':o','<img src="img/smiley3.gif" align="absmiddle">', $besked);
$besked = str_replace(':D','<img src="img/smiley4.gif" align="absmiddle">', $besked);
$besked = str_replace(':P','<img src="img/smiley5.gif" align="absmiddle">', $besked);
$besked = str_replace(':I','<img src="img/smiley6.gif" align="absmiddle">', $besked);
$besked = str_replace(':S','<img src="img/smiley7.gif" align="absmiddle">', $besked);
$besked = str_replace(';)','<img src="img/smiley8.gif" align="absmiddle">', $besked);
$besked = str_replace(':@','<img src="img/smiley9.gif" align="absmiddle">', $besked);
$besked = str_replace(':LOL:','<img src="img/smiley10.gif" align="absmiddle">', $besked);
$besked = str_replace('[','<b>', $besked);
$besked = str_replace(']','</b>', $besked);
$besked = str_replace('{','<i>', $besked);
$besked = str_replace('}','</i>', $besked);
?>
Avatar billede Slettet bruger
18. februar 2003 - 13:28 #2
Nedenstående skulle gerne løse dit problem!
include_once("includes/tagster.php");
while ($row = mysql_fetch_array($query)) {
$besked = nl2br($row[tekst]);
$besked = smilies($besked);
echo $besked;
}

tagster.php indeholder:

<?
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\" class=\"black\">\\2</A>", $str);
$str = eregi_replace("([[:space:]{()\"'\[~#=;\&?\_-])(www\.[a-z0-9~#%@\&\(\):;=\?\/\.,_-]+[a-z0-9~#%@\&:;,=\?\/_\+-]+)", "\\1<A HREF=\"http://\\2\" TARGET=\"_blank\" class=\"black\">\\2</A>", $str);
$str = eregi_replace("([_\.0-9a-z-]+@([0-9a-z-]+)+\.[a-z]{2,4})","<A HREF=\"mailto:\\1\" class=\"black\">\\1</A>", $str);
return substr($str, 1);
}
function smilies($besked)
{
$en_streng = "$besked";
$besked = string_tagster($en_streng);
$besked = str_replace(':)','<img src="img/smiley1.gif" align="absmiddle">', $besked);
$besked = str_replace(':(','<img src="img/smiley2.gif" align="absmiddle">', $besked);
$besked = str_replace(':o','<img src="img/smiley3.gif" align="absmiddle">', $besked);
$besked = str_replace(':D','<img src="img/smiley4.gif" align="absmiddle">', $besked);
$besked = str_replace(':P','<img src="img/smiley5.gif" align="absmiddle">', $besked);
$besked = str_replace(':I','<img src="img/smiley6.gif" align="absmiddle">', $besked);
$besked = str_replace(':S','<img src="img/smiley7.gif" align="absmiddle">', $besked);
$besked = str_replace(';)','<img src="img/smiley8.gif" align="absmiddle">', $besked);
$besked = str_replace(':@','<img src="img/smiley9.gif" align="absmiddle">', $besked);
$besked = str_replace(':LOL:','<img src="img/smiley10.gif" align="absmiddle">', $besked);
$besked = str_replace('[','<b>', $besked);
$besked = str_replace(']','</b>', $besked);
$besked = str_replace('{','<i>', $besked);
$besked = str_replace('}','</i>', $besked);
return $besked;
}
?>
Avatar billede Slettet bruger
18. februar 2003 - 13:31 #3
At inkludere filer og bruge dem som funktioner er en forkert løbe bane som ender med at spænde ben for en selv.
En god praksis er at lave en hovedfil/et bibliotek hvor alle funktioner (og klasser) bliver erklæret.
Avatar billede baronen20 Nybegynder
18. februar 2003 - 13:43 #4
hvad mener du?

(PS: det virker... læg et svar)
Avatar billede avminarm Juniormester
18. februar 2003 - 13:43 #5
regin>> måske er tagster.php hans hoved fil ;-)
Avatar billede Slettet bruger
18. februar 2003 - 13:45 #6
*Smider et svar*
I princippet skal filer kun inkludes EN GANG!
Håber du kan se logikken i det jeg gjorde!?
Avatar billede baronen20 Nybegynder
18. februar 2003 - 13:48 #7
aaahh nu forstår jeg...

jeg er lidt forvirret, har siddet med den kode i lang tid :)
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