🔤 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.
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>";
// <script>alert('XSS!');</script>
echo htmlentities($lietotājaIevade) . "<br>"; // Līdzīgs efekts
// Atpakaļ no HTML entitātēm
$html = "<b>Treknraksts</b>";
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
?>