Aposztróf és idézőjel
Mi a különbség aközött, hogy egy szöveget aposztrófok vagy idézőjelek közé teszünk PHP-ben? Erre a kérdésre keressük a választ.
Amikor egy sima szöveget iratunk ki a képernyőre az echo (vagy a print) függvénnyel, mindegy hogy aposztrófok vagy idézőjelek közé tesszük. A kért szöveg megjelenik a képernyőn:
<?php
echo "Teszt szöveg";
echo "<br />"; // Sortörés
echo 'Teszt szöveg';
?>
A fő különbség, hogy az idézőjelek között lévő változókat és speciális karaktereket a PHP megpróbálja értelmezni, és az eredményt kiírni, amíg az aposztrófok között lévőket szövegként kezeli, és nem értelmezi:
<?php
echo "Teszt szöveg";
echo "<br />"; // Sortörés
echo 'Teszt szöveg';
echo "<br />"; // Sortörés
$valtozo = "Teszt";
echo "A változó értéke: $valtozo.";
echo "<br />"; // Sortörés
echo 'A változó értéke: $valtozo.';
?>
A fenti kód jól szemlélteti az eltérést. Az idézőjelek a $valtozo értékét eredményezték (Teszt), az aposztrófok viszont csak szimpla szövegnek tekintették ($valtozo).
Magyarul, az aposztrófok pontosan azt jelenítik meg, amit gépelünk közéjük. Azonban, akad két kivétel:
Az első, ha aposztrófok között szeretnénk aposztrófokat megjeleníteni, akkor ezeket nem írhatjuk simán a kódunkba, hiszen a második aposztróf jelet a PHP a szöveg végének értelmezné, a fennmaradó rész pedig hibákat okozna.:
<?php
echo 'Teszt 'szöveg''; // Hibás kód
?>
A megoldást a backslash (\) karakter jelenti. A fenti kód helyesen:
<?php
echo 'Teszt \'szöveg\''; // Helyes kód
?>
A második pedig maga a backslash karakter, ami speciális jelentéssel bír, ezért ha ilyen karaktert szeretnénk megjelentetni, akkor használjuk duplán írva (\\).
A backslash az idézőjeleknél is segít. Ha idézőjelek között szeretnénk idézőjelet megjeleníteni, akkor használjuk \" formában.
<?php
echo "Teszt \"szöveg\"";
?>
És még egy érdekesség a végére.
Ahogy a poszt elején írtam, az idézőjelek közt lévő változókat a PHP kiértékeli, azonban ha szeretnénk, hogy a $ jelet ne változóként értelmezze, akkor itt is használhatjuk a backslash karaktert (\$):
<?php
$valtozo = "Teszt";
echo "A változó értéke: \$valtozo.";
?>