PHP

PHP KOULUTUSTA VUONNA 2025!

Kurssit saatavilla kautta Suomen. Tule ja varaa oma koulutustapahtumasi heti! Koulutuksen järjestää asiantuntijasi Koulutus- ja konsultointipalvelu KK Mediat.

PHP:n tietotyypit: merkkijonot (strings) ja niiden käsittely

PHP:ssä kaikki lainausmerkeillä (' tai ") rajatut arvot ovat merkkijonoja. Merkkijonotyyppisen muuttujan nimeämisessä tulisi hyödyntää käytäntöä, jossa muuttujan nimi alkaa pienellä s-kirjaimellä (s=string). Esimerkiksi:


<?php
    $sHello = "Hello World";
	$sHelloAgain = 'Moi uudelleen';
?>

Lainausmerkin tyyli määrittää korvauskäytännön

PHP:ssä merkkijono voidaan määritellä joko yksinkertaisilla lainausmerkeillä (') tai kaksoislainausmerkeillä ("). Valinta vaikuttaa siihen, miten PHP tulkitsee merkkijonon sisällön:

Esimerkiksi::


<?php
    $sNimi = "Keijo";
    echo "Hei $sNimi!";  // Tulostaa: Hei Keijo!
    echo 'Hei $sNimi!';  // Tulostaa: Hei $sNimi!
?>

Merkkijonojen yhdistäminen

PHP:ssä merkkijonot yhdistetään pisteellä (.). Tämä toimii sekä muuttujien että vakiomerkkijonojen kanssa:


<?php
    $sEtuNimi = "Keijo";
    $sSukuNimi = "Koo";
    $sKokoNimi = $sEtuNimi . " " . $sSukuNimi;
    echo $sKokoNimi;  // Tulostaa: Keijo Koo
?>


Voit myös ketjuttaa useita merkkijonoja yhteen pisteoperaattorilla, esimerkiksi näin


<?php
    echo "Tervetuloa, " . $sEtuNimi . "!";
?>

Escape-merkit kaksoislainauksissa

Kun käytät lainausmerkki-syntaksia ("..."), tietyt merkit pitää "paeta" kenoviivalla \. Alla oleva taulukko listaa yleisimmät PHP:n escape-merkinnät:

Escape merkki Seloste
\n Rivinvaihto (LF tai 0x0A (ASCII))
\r Rivinvaihto(CR tai 0x0D(ASCII))
\t Pystysuora sisennys (HT tai 0x09(ASCII))
\\ Kenoviiva
\$ Dollari merkki
\" Lainausmerkki(")
\[0-7]{1,3} Säännöllinen lause, joka edellyttää että arvo on oktaalidesimaalimuodossa
\x[0-9A-Fa-f]{1,2} Säännöllinen lause, joka edellyttää että arvo on heksadesimaalimuodossa.

Esimerkiksi rivinvaihtojen tuottaminen PHP-koodissa voi tapahtua seuraavasti:


<?php
    echo "<body>\n";
?>

Saman lopputuloksen saa aikaiseksi käyttämällä PHP:n sisäisiä vakioita:


<?php
    echo "<body>". PHP_EOL;
?>

Toinen tapa on käyttää yksinkertaista lainausmerkkiä ('). Kun käytetään tätä tapaa, ainoastaan kenoviiva (\\) ja yksinkertainen lainausmerkki (\') pitää korvata.


<?php
    echo 'O\'Hara on irlantilainen sukunimi.';
?>

Heredoc- ja Nowdoc-syntaksi

PHP tukee myös monirivisten merkkijonojen määrittelyä Heredoc- ja Nowdoc-syntaksilla.

Heredoc toimii kuten kaksoislainaukset — muuttujat ja erikoismerkit tulkitaan:


<?php
    $sNimi = "Keijo";
    echo <<<EOT
    Hei, $sNimi!
    Tämä on monirivinen teksti.
    EOT;
?>

Nowdoc toimii kuten yksinkertaiset lainaukset — mitään ei tulkita:


<?php
    $sNimi = 'Keijo';
    echo <<<'EOT'
    Hei, $sNimi!
    Tämä tulostaa muuttujan nimen sijaan kirjaimellisesti $sNimi.
    EOT;
?>

Merkkijonojen muuntaminen toiseksi tietotyypiksi

Kun merkkijono arvioidaan numeeriseksi, lopputulos ja tietotyyppi päätellään seuraavasti:

Alla on muutamia esimerkkejä merkkijonomuunnoksista:


$foo = 1 + "10.5";              // liukuluku (11.5)
$foo = 1 + "-1.3e3";            // liukuluku(-1299)
$foo = 1 + "abc-1.3e3";         // kokonaisluku(1)
$foo = 1 + "abc3";              // kokonaisluku (1)
$foo = 1 + "10 pientä possua";  // kokonaisluku(11)
$foo = "10.0 possua " + 1;      // kokonaisluku (11)
$foo = "10.0 possua " + 1.0;    // liukuluku (11)     

Mikäli olet epävarma muuttujasi tietotyypistä, voit tulostaa sen näytölle seuraavasti:


$sFoo = "10.0 yksikköä" + 1;  // laskutoimitus muuntaa tämän numeerikseksi
echo gettype($sFoo);


Merkkijonon käsitteleminen taulukkona

PHP:ssä merkkijonoja voi käsitellä kuin taulukoita, joissa jokaisella merkillä on oma indeksi. Kyseessä on muun muassa C- ja Java-kielestä tuttu piirre:


<?php
$sText = "Tämä on merkkijono";

/* Noudetaan merkkijonon ensimmäinen merkki */
$sFirst = $sText[0];

/* Noudetaan merkkijonon viimeinen merkki */
$sLast = $sText[strlen($sText)-1];
?>

Hyödyllisiä merkkijonofunktioita

Alapuolelle on listattu muutamia yleishyödyllisiä merkkijonofunktioita niiden käyttötarkoituksineen:

Menetelmä Seloste
strtolower(); Muuntaa merkkijonon pieniksi kirjaimiksi (smallcaps)
strtoupper(); Muuntaa merkkijonon kapiteeleiksi (isot kirjaimet).
substr(); Palauttaa osan merkkijonosta
strlen(); Palauttaa merkkijonon pituuden.
trim(); Poistaa tyhjät merkit merkkijonon alusta ja lopusta.
strrev(); Palauttaa merkkijonon peilikuvana

Esimerkiksi:


<?php
    $sText = 'Hello';
	
    echo strtolower($sText);  // Hello
    echo strtoupper($sText);  // HELLO
    echo strlen($sText);  // 5
	
?>