0%

🔤 Virknes (Strings)

Virknes ir viena no visbiežāk izmantotajām datu tipiem PHP. PHP piedāvā plašu iebūvēto funkciju klāstu virkņu apstrādei.

php

Virkņu garums un meklēšana

Teksts
<?php
$teksts = "Sveika, pasaule!";

// Garums
echo strlen($teksts) . "<br>";          // 16 (baitos)
echo mb_strlen($teksts) . "<br>";       // 16 (daudzbaitu rakstzīmēm)

// Meklēšana
echo strpos($teksts, "pasaule") . "<br>"; // 8 (pozīcija no 0)
echo strrpos($teksts, "a") . "<br>";      // 14 (pēdējā pozīcija)

// Vai virkne satur citu virkni?
if (str_contains($teksts, "pasaule")) {   // PHP 8+
    echo "Satur vārdu 'pasaule'<br>";
}

// Vai virkne sākas/beidzas ar?
if (str_starts_with($teksts, "Sveika")) {  // PHP 8+
    echo "Sākas ar 'Sveika'<br>";
}

if (str_ends_with($teksts, "!")) {         // PHP 8+
    echo "Beidzas ar '!'<br>";
}

// Vecākā metode (strpos atgriež false, ja nav atrasts)
if (strpos($teksts, "pasaule") !== false) {
    echo "Satur 'pasaule' (vecā metode)<br>";
}
?>

Virkņu modifikācijas

Teksts
<?php
$teksts = "  Sveika, Pasaule!  ";

// Lielie/mazie burti
echo strtolower($teksts) . "<br>";      // sveika, pasaule!
echo strtoupper($teksts) . "<br>";      // SVEIKA, PASAULE!
echo ucfirst("sveika") . "<br>";        // Sveika
echo ucwords("labdien pasaule") . "<br>"; // Labdien Pasaule
echo mb_strtolower($teksts) . "<br>";   // Labāk latviešu burtiem!
echo mb_strtoupper($teksts) . "<br>";

// Atstarpju noņemšana
echo trim($teksts) . "<br>";            // "Sveika, Pasaule!" (abi gali)
echo ltrim($teksts) . "<br>";           // "Sveika, Pasaule!  " (kreisais gals)
echo rtrim($teksts) . "<br>";           // "  Sveika, Pasaule!" (labais gals)

// Aizvietošana
$jauns = str_replace("Pasaule", "PHP", $teksts);
echo $jauns . "<br>"; // "  Sveika, PHP!  "

// Aizstāj ar reģistrnejutīgu meklēšanu
$jauns2 = str_ireplace("pasaule", "JavaScript", $teksts);
echo $jauns2 . "<br>"; // "  Sveika, JavaScript!  "

// Vairāku aizvietošanu uzreiz
$teksts2 = "Āra laiks ir labs";
echo str_replace(
    ["labs", "Āra"],  // Meklē
    ["lielisks", "Iekšā"],   // Aizstāj
    $teksts2
) . "<br>"; // "Iekšā laiks ir lielisks"
?>

Apgriešana, atkārtošana, apvēršana

Teksts
<?php
$teksts = "Programmēšana";

// Apgriešana (substring)
echo substr($teksts, 0, 7) . "<br>";    // Programm
echo substr($teksts, 7) . "<br>";       // ēšana
echo substr($teksts, -5) . "<br>";      // šana (no beigām)
echo mb_substr($teksts, 0, 7) . "<br>"; // Labāk multibyte rakstzīmēm

// Atkārtošana
echo str_repeat("ab", 3) . "<br>";      // ababab
echo str_repeat("-", 20) . "<br>";      // --------------------

// Apvēršana
echo strrev("PHP") . "<br>";            // PHP (palindroms)
echo strrev("Sveiki") . "<br>";         // ikievS

// Pildījums (padding)
echo str_pad("42", 5) . "<br>";         // "42   " (ar atstarpēm pa labi)
echo str_pad("42", 5, "0", STR_PAD_LEFT) . "<br"; // "00042"

// Virknes atkārtošana ar sprintf
echo sprintf("%05d", 42) . "<br>";      // 00042
echo sprintf("%.2f", 3.14159) . "<br>"; // 3.14
echo sprintf("%s ir %d gadus vecs", "Jānis", 25) . "<br>";
?>

Dalīšana un apvienošana

Teksts
<?php
// Sadalīt virkni masīvā
$datums = "2026-03-06";
$daļas = explode("-", $datums);
print_r($daļas);
// Array ( [0] => 2026 [1] => 03 [2] => 06 )

echo "Gads: " . $daļas[0] . "<br>";    // 2026
echo "Mēnesis: " . $daļas[1] . "<br>"; // 03

// Sadalīt, bet ne vairāk kā N daļās
$daļas2 = explode("-", $datums, 2);
// Array ( [0] => 2026 [1] => 03-06 )

// Apvienot masīvu virknē
$vārdi = ["PHP", "JavaScript", "MySQL"];
echo implode(", ", $vārdi) . "<br>"; // PHP, JavaScript, MySQL
echo join(" | ", $vārdi) . "<br>";   // PHP | JavaScript | MySQL (join = implode alias)

// Sadalīt rakstzīmju sarakstā
$burtu_saraksts = str_split("Sveiki", 2);
print_r($burtu_saraksts);
// Array ( [0] => Sv [1] => ei [2] => ki )

// Virkni rindās (pēc rindas pārtraukuma)
$teksts = "Rinda 1\nRinda 2\nRinda 3";
$rindas = explode("\n", $teksts);
foreach ($rindas as $rinda) {
    echo trim($rinda) . "<br>";
}
?>

Virkņu formatēšana un HTML

Teksts
<?php
// Droša HTML izvadīšana (XSS aizsardzība!)
$lietotājaIevade = "<script>alert('XSS!');</script>";
echo htmlspecialchars($lietotājaIevade) . "<br>";
// &lt;script&gt;alert(&#039;XSS!&#039;);&lt;/script&gt;

echo htmlentities($lietotājaIevade) . "<br>"; // Līdzīgs efekts

// Atpakaļ no HTML entitātēm
$html = "&lt;b&gt;Treknraksts&lt;/b&gt;";
echo html_entity_decode($html) . "<br>"; // <b>Treknraksts</b>

// Rindas pārtraukumi uz <br>
$teksts = "Pirmā rinda\nOtrā rinda\nTrešā rinda";
echo nl2br($teksts) . "<br>";

// Izdzēst HTML tagi
$arTagiem = "<p>Šis ir <b>teksts</b> ar tagiem.</p>";
echo strip_tags($arTagiem) . "<br>"; // "Šis ir teksts ar tagiem."

// Atļaut tikai noteiktus tagus
echo strip_tags($arTagiem, "<b>") . "<br>"; // "Šis ir <b>teksts</b> ar tagiem."

// printf - formatēta izvade (kā echo ar formātu)
printf("Vārds: %s, Vecums: %d, Augstums: %.2f m\n",
    "Anna", 28, 1.65);
// Vārds: Anna, Vecums: 28, Augstums: 1.65 m

// vsprintf - rezultātu saglabāt mainīgajā
$formatēts = sprintf("Cena: %.2f EUR", 49.9);
echo $formatēts . "<br>"; // Cena: 49.90 EUR
?>

Regulārās izteiksmes (Regex)

Regulāras izteiksmes ļauj meklēt un apstrādāt tekstu pēc sarežģītiem modeļiem.

🎓 Ko mācīties tālāk?

Nākamajā sadaļā iepazīstieties ar nosacījumu konstrukcijām PHP – if, else, switch un match.

Teksts
<?php
// preg_match - pārbauda, vai atbilst modelim
$epasts = "lietotajs@example.lv";
if (preg_match("/^[\w.+\-]+@[\w\-]+\.[a-z]{2,}$/i", $epasts)) {
    echo "Derīgs e-pasts<br>";
}

// preg_match_all - atrod visas atbilstības
$teksts = "Zvaniet uz 29001234 vai 67123456";
preg_match_all("/\d{8}/", $teksts, $atbilstības);
print_r($atbilstības[0]);
// Array ( [0] => 29001234 [1] => 67123456 )

// preg_replace - aizvietošana ar regex
$result = preg_replace("/\d+/", "##", "Telefons: 29001234");
echo $result . "<br>"; // Telefons: ##

// preg_split - dalīšana ar regex
$vārdi = preg_split("/[\s,]+/", "PHP JavaScript, MySQL HTML");
print_r($vārdi);

// Bieži izmantotie regex modeļi:
// \d    - cipars (0-9)
// \w    - vārda rakstzīme (burti, cipari, _)
// \s    - atstarpe
// .     - jebkura rakstzīme
// ^     - rindas sākums
// $     - rindas beigas
// +     - 1 vai vairāk
// *     - 0 vai vairāk
// ?     - 0 vai 1
// {n}   - tieši n reizes
// {n,m} - no n līdz m reizēm
?>