Avatar billede xsix Nybegynder
31. august 2008 - 17:25 Der er 19 kommentarer og
1 løsning

Irriterende string fejl

Hej Eksperter, jeg får den her meget irriterende fejl, og jeg kan simpelthen ikke se hvad det er jeg gør forkert, håber i kan.

Dette er koden hvor fejlen forekommer:

$strmsg['1'] = "\" . $win['accountname'] . \" see that \" . $lose['accountname'] . \" is starting to look tired, and sets in with a final full strenght attack, that completly destroys \" . $lose['accountname'] . \" to bits.\"";

Fejlen er:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /xxxxx/xxxxx/xxxxx.com/xxxx/xxxxx.php on line 137


På forhånd mange tak.
Avatar billede dkfire Nybegynder
31. august 2008 - 17:31 #1
Prøv med :
$strmsg['1'] = "\" . {$win['accountname']} . \" see that \" . {$lose['accountname']} . \" is starting to look tired, and sets in with a final full strenght attack, that completly destroys \" . {$lose['accountname']} . \" to bits.\"";

Dog forstår jeg slet ikke hvorfor du bruger alle de \". Det giver slet ingen mening når du også har . ved hver variabel.
Måske du endda vil kunne bruge:
$strmsg['1'] = " {$win['accountname']} see that {$lose['accountname']} is starting to look tired, and sets in with a final full strenght attack, that completly destroys {$lose['accountname']} to bits";

Eller måske:
$strmsg['1'] = $win['accountname'] . " see that " . $lose['accountname'] . " is starting to look tired, and sets in with a final full strenght attack, that completly destroys " . $lose['accountname'] . " to bits.";
Avatar billede jakobdo Ekspert
31. august 2008 - 17:35 #2
Eller:

$strmsg['1'] = '"' . $win['accountname'] . ' see that ' . $lose['accountname'] . ' is starting to look tired, and sets in with a final full strenght attack, that completly destroys ' . $lose['accountname'] . ' to bits.'"';

Men du skal nok nærmere skrive den streng, som du gerne vil ende ud med.
Avatar billede xsix Nybegynder
31. august 2008 - 17:58 #3
dkfire: Det er fordi jeg lægger forskellige strings ind i en variable som så skal udskrives i en anden sammenhæng senere.
Ved ikke om det virker på andre måder, men det var den måde jeg startede med det på, så nemmere bare at forsætte med det tror jeg.

Hmm får ikke den fejl der mere, men får heller ikke linjen udskrevet.

Koden er sådan her nu:

$strmsg['1'] = "\" . {$win['accountname']} . \" see that \" . {$lose['accountname']} . \" is starting to look tired, and sets in with a final full strenght attack, that completly destroys \" . {$lose['accountname']} . \" to bits.\"";

$strrand = rand(1,1);

echo nl2br("" . $strmsg['$strrand'] . "\n\n");

Men det kommer ikke frem på siden.
Avatar billede xsix Nybegynder
31. august 2008 - 18:18 #4
Hmm er nået frem til at det må være min random function der er noget galt med, men kan bare ikke se hvad der kan være galt med den? :S
Avatar billede jakobdo Ekspert
31. august 2008 - 18:22 #5
Hvordan skal den færdige streng se ud ?

" noget " hej mor " ' hej ' what ? ";

Prøv at skriv hvad du vil ende ud med.
Avatar billede xsix Nybegynder
31. august 2008 - 18:27 #6
Koden er taget ud fra en angrebs function jeg har, så alt efter hvem der vinder en kamp via denne angrebs function vil så se denne tekst.
Hvis vi siger at det er "Hejmeddig" der kæmper mod "Dummemand" og "Hejmeddig" vinder, vil den se sådan ud:
"Hejmeddig see that Dummemand is starting to look tired, and sets in with a final full strenght attack, that completly destroys Dummemand to bits."

Men de eneste 3 linjer kode der som sådan har med det at gøre, er:

$strmsg['1'] = "\" . {$win['accountname']} . \" see that \" . {$lose['accountname']} . \" is starting to look tired, and sets in with a final full strenght attack, that completly destroys \" . {$lose['accountname']} . \" to bits.\"";

$strrand = rand(1,1);

echo nl2br("" . $strmsg['$strrand'] . "\n\n");

Hvis jeg tager "echo nl2br("" . $strmsg['$strrand'] . "\n\n");" og sætter "1" ind i stedet for "$strrand", så virker det fint, så på den måde vil jeg sige at det er random functionen jeg har lavet noget galt med?
Avatar billede jakobdo Ekspert
31. august 2008 - 18:31 #7
Hvad så med mit indlæg fra: 31/08-2008 17:35:36 ?
Avatar billede xsix Nybegynder
31. august 2008 - 18:34 #8
Koden eller "Men du skal nok nærmere skrive den streng, som du gerne vil ende ud med."?

Jeg kan ikke udskrive strengen direkte, for jeg ønsker at have en random tekst hver gang, det er derfor jeg bruger random funktionen.
Avatar billede dkfire Nybegynder
31. august 2008 - 18:36 #9
Har du prøvet at skrive din streng ud, uden noget som helst random ting. ??
Avatar billede xsix Nybegynder
31. august 2008 - 18:38 #10
Ja, som jeg skrev i mit indlæg 31/08-2008 18:27:23:
Hvis jeg tager "echo nl2br("" . $strmsg['$strrand'] . "\n\n");" og sætter "1" ind i stedet for "$strrand", så virker det fint, så på den måde vil jeg sige at det er random functionen jeg har lavet noget galt med?
Avatar billede dkfire Nybegynder
31. august 2008 - 18:44 #11
Det er måske heller ikke særlig optimalt at teste en funktion som rand() med kun ét tal at vælge imellem.
Prøv at lave lidt flere sætninger inden du tester rand().
Avatar billede xsix Nybegynder
31. august 2008 - 19:27 #12
Har prøvet at teste med flere sætning, det gør ingen forskel. Men det burde også virke når man bruger rand(1,1).
Avatar billede jakobdo Ekspert
31. august 2008 - 19:36 #13
rand(1,1) vil jo bare give 1.
Avatar billede dkfire Nybegynder
31. august 2008 - 20:12 #14
Hva så med at prøve noget ala:

$strmsg['1'] = "\" . {$win['accountname']} . \" see that \" . {$lose['accountname']} . \" is starting to look tired, and sets in with a final full strenght attack, that completly destroys \" . {$lose['accountname']} . \" to bits.\"";

$strrand = rand(1,1);

echo nl2br("" . $strmsg["'$strrand'"] . "\n\n");
Avatar billede xsix Nybegynder
31. august 2008 - 20:58 #15
Det virker ikke, forstår virkelig ikke hvorfor det ikke virker, giver ingen mening.

Hvis man skriver:

echo nl2br("" . $strmsg['1'] . "\n\n");

Virker det, men hvis man skriver:

$strrand = rand(1,1);
echo nl2br("" . $strmsg['$strrand'] . "\n\n");

Virker det ikke.
Avatar billede dkfire Nybegynder
31. august 2008 - 21:06 #16
Med hvad sker der hvis du skriver:
echo nl2br("" . $strmsg["'$strrand'"] . "\r\n");

eller måske endda:

$strrand = rand(1,1);
$strrand = "'" . $strrand . "'";
echo nl2br("" . $strmsg[$strrand] . "\n\n");
Avatar billede xsix Nybegynder
31. august 2008 - 21:09 #17
Fik det til at virke ved blot at fjerne '' rundt om $strrand.

Mange tak for hjælpen, bare læg et svar dkfire :)
Avatar billede dkfire Nybegynder
31. august 2008 - 21:35 #18
Godt det virker, men deler da gerne med Jokobdo
Avatar billede dkfire Nybegynder
31. august 2008 - 21:36 #19
Jakobdo da
Avatar billede jakobdo Ekspert
31. august 2008 - 21:39 #20
Springer over, mit var mere eller mindre samme forslag.
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