webForumDet fria alternativet

Parse error: Unexpected \

PHPur PHP

14 svar · 252 visningar · startad av aasah

Medlem sedan mars 20034 471 inlägg
Frågan#1

Jag kör ett babyskript ... och det funkar inte. Följande tjusiga felmeddelande dyker upp:

servern skrev:

Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/aasah/www/SimpleQuiz.php on line 81

  1. Vad innebär detta fel egentligen (allmänt sett)?
  2. Och i detta fall, (del av koden) :
<?php 

$me = $_SERVER['PHP_SELF'];

//....

<form name = "simpleQ" action="$me" method="POST">
<pre>
Your name, please:  <input type="text" name="challenger" />

//....
<input type="submit" value="Test me!">

</pre>
</form>
//...

   if (!isSet($_POST["challenger"]) || $_POST["challenger"] == "")
      echo "<h1>The result of the quiz:</h1>";
   else echo "<h1>$_POST["challenger"]! The result of the quiz: </h1>";   //line 81

   echo "rate($correct["0"], $points)";
}

?>

Kan posta mer kod om det behövs... Jag fattar ingenting... :x

Medlem sedan dec. 200012 464 inlägg
#2
echo "<h1>" . $_POST["challenger"] . "! The result of the quiz: </h1>";

Du verkar ju ha flera fel av den typen.

Medlem sedan juli 20033 147 inlägg
#3

Antar att felet ligger här:

echo "<h1>$_POST["challenger"]! ...

Du kan inte ha "-tecken inute en echo som skrivs ut med ".
Skriv såhär:

echo "<h1>".$_POST["challenger"]."

Så borde det funka.

Medlem sedan mars 20034 471 inlägg
#4

Ah! Tusen tack! :) Jag uppskattar förklaringen Melea! :birp

Är det alltid problem med echo-strängar om detta fel dyker upp eller vad är det man allmänt sett ska hålla utkik efter ifall man stöter på det fler gånger? :q

Medlem sedan juli 20033 147 inlägg
#5

Parse error får man när man skrivit fel i t.ex. en echo/ifsats eller dyl.

Medlem sedan juni 20034 013 inlägg
#6

Rent allmänt betyder parse error att php inte fattar vad du menar :-)

När du börjar en sträng med " så kom ihåg att vid nästa " så slutar den!

echo "<h1>$_POST["challenger"]

Detta ovan skriver alltså ut:
<h1>$_POST[

För där kommer nästa " och då slutar strängen. Sedan kommer challenger från ingenstans och det begriper inte php vad det är, så där tar det stopp.

Enkla variabler kan man ha inuti strängar, som $test, $tjo och $hej, men inte $_POST["challenger"] utan den måste du ha utanför strängen.

Flera strängar kan dock sättas ihop till en med hjälp av tecknet . (punkt)

$namn = "Test";
$test = "Hej " . "på dig " . $namn;
echo($test); // Skriver ut: Hej på dig Test

Medlem sedan maj 2004693 inlägg
#7

du kan också skriva så här

echo "<h1>{$_POST["challenger"]}! The result of the quiz: </h1>";
Medlem sedan juli 20033 147 inlägg
#8

Tänkte just skriva ett citat från just dig tydal från en annan post där någon frågade vad parse error betydde. ;)

tydal skrev:

Parse error är alltid ett skrivfel, dvs du har med ett ogiltigt tecken eller så har du glömt ett tecken som är nödvändigt.

Med tanke på det du skrev i ditt senaste inlägg går det ju faktiskt att skriva både

echo '$test';

Och

echo '$_POST[challenger]';

Det går alltså att skriva utan fnuttar i POST, GET, SESSION, COOKIE osv.

Medlem sedan juni 20034 013 inlägg
#9

aasah skrev:

Är det alltid problem med echo-strängar om detta fel dyker upp eller vad är det man allmänt sett ska hålla utkik efter ifall man stöter på det fler gånger? :q

Det kan vara problem var som helst, men det är alltid något problem med språket. Du kan ha stavat fel, glömt ett tecken eller satt dit ett tecken för mycket. Php tar i allmänhet om vilket tecken det gäller och alltid vilken rad det är, så det är bara att titta noga tills du ser den lilla missen.

Det kan vara svårt att se den i sin egen kod som man nyss har skrivit, men om du låter någon annan titta på den (här t.ex.) eller gör något annat en liten stund och sen går tillbaka så ser man det lättare.

Även med många års erfarenhet kan man stirra sig blind på såna här saker...

Medlem sedan juni 20034 013 inlägg
#10

Melea skrev:

echo '$test';

Fast det där skriver ut $test och inte variabelns innehåll.

Medlem sedan mars 20034 471 inlägg
#11

tydal skrev:

... När du börjar en sträng med " så kom ihåg att vid nästa " så slutar den!

echo "<h1>$_POST["challenger"]

Detta ovan skriver alltså ut:
<h1>$_POST[

För där kommer nästa " och då slutar strängen. Sedan kommer challenger från ingenstans och det begriper inte php vad det är, så där tar det stopp.....

Herregud vad jag är dum! :r Självklart!! Det är ju därför man behöver \ för att "escapea" vissa tecken...

Glöm denna tråd, tack.... :r

Medlem sedan juli 20033 147 inlägg
#12

tydal skrev:

Melea skrev:

echo '$test';

Fast det där skriver ut $test och inte variabelns innehåll.

Jo, jag skrev fel, jag menade

echo "$test";

Då skrivs $test:s värde ut och inte bara $test.

Medlem sedan juni 20034 013 inlägg
#13

aasah skrev:

Glöm denna tråd, tack.... :r

Det är sånt här man lär sig på. Jag glömmer aldrig när en klasskompis till mig på högskolan (jo, en tjej faktiskt) ville ha lite hjälp med programmeringen. Hon lyckades inte få sitt program att fungera och hon sa att det blev just parse error. Jag sa att det måste vara något litet tecken som är fel, kanske nåt semikolon. Men nej då, det var det inte, sa hon, för hon hade kollat jättenoga och hon hade inte glömt något semikolon. Hon var säker på att det var något fel på datorn. Så jag följde ju med henne till datorsalen för att kolla på hennes kod, och det visade sig vara en intressant upplevelse. Hon hade faktiskt inte glömt något semikolon. Verkligen inte. Snarare tvärtom...

if (a == 2);
  printf("Nu minns jag inte vad som stod här...");
else if (a == 3);
  printf("... och jag har för dålig fantasi...");
else;
  printif("... men ni förstår principen.");
Medlem sedan juni 20001 521 inlägg
#14

Du kommer även få samma fel på rad 83.

echo "rate($correct["0"], $points)";
Medlem sedan mars 20034 471 inlägg
#15

Gislaved.net skrev:

Du kommer även få samma fel på rad 83.

echo "rate($correct["0"], $points)";

Jo, jag vet... :r

136 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)