Uvod u PHP stringove: Sve što trebate znati o tekstu u kodu
Dobrodošli u svijet PHP programiranja! Danas ćemo zaroniti u jedan od najfundamentalnijih, a ujedno i najčešće korištenih tipova podataka – stringove. Bilo da gradite web stranicu, obrađujete korisnički unos ili generirate izvještaje, rad sa stringovima je neizbježan. Stoga, hajde da detaljno istražimo što su stringovi u PHP-u, kako ih koristiti i koje su najbolje prakse.
Što je string u PHP-u?
U najjednostavnijem smislu, string je niz znakova. To je način na koji programski jezici, uključujući PHP, predstavljaju tekstualne podatke. Svaki put kada radite s riječima, rečenicama, imenima, URL-ovima, HTML kodom ili bilo kojim drugim tekstom, vi radite sa stringovima.
U PHP-u, stringovi se mogu deklarirati na nekoliko načina, najčešće korištenjem jednostrukih ili dvostrukih navodnika.
<?php
$ime = 'Marko'; // String s jednostrukim navodnicima
$pozdrav = "Zdravo, svijete!"; // String s dvostrukim navodnicima
$adresa = "Ulica jorgovana 5"; // Još jedan string
?>
Razlika između jednostrukih i dvostrukih navodnika
Ovo je ključna razlika koju svaki PHP developer mora razumjeti:
-
Jednostruki navodnici (
'): PHP tretira sadržaj unutar jednostrukih navodnika doslovno. To znači da se varijable unutar stringa neće interpretirati (zamijeniti svojom vrijednošću), niti će se većina escape sekvenci obraditi (osim\'i\\).<?php $ime = 'Ana'; echo 'Moje ime je $ime.'; // Ispisat će: Moje ime je $ime. echo 'Ovo je nova linija\n.'; // Ispisat će: Ovo je nova linija\n. ?>Prednost je što je brže (PHP ne mora tražiti varijable), ali i jednostavnije ako ne želite interpolaciju.
-
Dvostruki navodnici (
"): PHP interpretira sadržaj unutar dvostrukih navodnika. To uključuje zamjenu varijabli njihovim vrijednostima (interpolacija) i obradu escape sekvenci (poput\nza novu liniju,\tza tabulator itd.).<?php $ime = 'Ana'; echo "Moje ime je $ime."; // Ispisat će: Moje ime je Ana. echo "Ovo je nova linija.\n"; // Ispisat će: Ovo je nova linija. (s novom linijom) ?>Dvostruki navodnici su praktičniji kada trebate dinamički umetati varijable u string.
Rad sa stringovima: Osnovne operacije
PHP nudi bogat set alata za manipulaciju stringovima. Evo nekih osnovnih operacija:
Konkatenacija (spajanje) stringova
Spajanje (konkatenacija) je proces kombiniranja dva ili više stringova u jedan. U PHP-u se to radi pomoću operatora točke (.).
<?php
$pozdrav = "Dobar ";
$dan = "dan!";
$punPozdrav = $pozdrav . $dan; // Spaja "Dobar " i "dan!"
echo $punPozdrav; // Ispisat će: Dobar dan!
$poruka = "Pozdrav, " . $ime . "! Kako ste?";
echo $poruka; // Ispisat će (ako je $ime = 'Ana'): Pozdrav, Ana! Kako ste?
?>
Duljina stringa
Funkcija strlen() vraća duljinu stringa (broj znakova).
<?php
$tekst = "Ovo je neki tekst.";
echo strlen($tekst); // Ispisat će: 18
?>
Napomena: strlen() broji bajtove, što može biti problem kod više-bajtovnih znakova (npr. hrvatska slova š, đ, č, ć, ž) ako je encoding UTF-8. Za takve slučajeve, bolje je koristiti mb_strlen() (ako je omogućen mbstring ekstenzija).
Pristup znakovima
Možete pristupiti pojedinim znakovima stringa koristeći uglate zagrade, slično kao kod polja.
<?php
$word = "Hello";
echo $word[0]; // Ispisat će: H
echo $word[1]; // Ispisat će: e
echo $word[strlen($word) - 1]; // Ispisat će: o (zadnji znak)
?>
Opet, budite oprezni s više-bajtovnim znakovima. mb_substr() je prikladnija funkcija za siguran rad s dijelovima stringova u UTF-8.
Ispis stringova
Najčešće funkcije za ispis stringova su echo i print.
echo: Može ispisati više stringova odvojenih zarezom i nema povratnu vrijednost. Nešto je brži odprint.print: Može ispisati samo jedan string i uvijek vraća1.
<?php
$ime = "Pero";
echo "Zdravo", " ", $ime, "!"; // Zdravo Pero!
print "Doviđenja!"; // Doviđenja!
?>
Korisne PHP funkcije za stringove
PHP ima stotine ugrađenih funkcija za manipulaciju stringovima. Evo nekih od najkorisnijih:
Pretvaranje stringova
strtoupper($string): Pretvara sve znakove u stringu u velika slova.strtolower($string): Pretvara sve znakove u stringu u mala slova.ucfirst($string): Pretvara prvi znak stringa u veliko slovo.ucwords($string): Pretvara prvi znak svake riječi u stringu u veliko slovo.
<?php
$tekst = "ovo je neki tekst.";
echo strtoupper($tekst); // OVO JE NEKI TEKST.
echo strtolower("VELIKI TEKST"); // veliki tekst
echo ucfirst($tekst); // Ovo je neki tekst.
echo ucwords($tekst); // Ovo Je Neki Tekst.
?>
Pretraživanje i zamjena
strpos($string, $search): Pronalazi poziciju prvog pojavljivanja podstringa unutar stringa. Vraćafalseako nije pronađen.substr($string, $start, $length): Izrezuje dio stringa.str_replace($search, $replace, $string): Zamjenjuje sva pojavljivanja podstringa drugim podstringom.preg_replace($pattern, $replacement, $string): Snažnija verzijastr_replacekoja koristi regularne izraze za pretraživanje i zamjenu.
<?php
$recenica = "Ovo je primjer rečenice za pretraživanje i zamjenu.";
$pozicija = strpos($recenica, "primjer"); // 7 (počinje od 0)
echo $pozicija;
$podstring = substr($recenica, 7, 7); // primjer
echo $podstring;
$novaRecenica = str_replace("primjer", "testni tekst", $recenica);
echo $novaRecenica; // Ovo je testni tekst rečenice za pretraživanje i zamjenu.
?>
Uklanjanje praznina
trim($string): Uklanja praznine (uključujući razmake, tabulatore, nove linije) s početka i kraja stringa.ltrim($string): Uklanja praznine samo s lijeve strane stringa.rtrim($string): Uklanja praznine samo s desne strane stringa.
<?php
$neuredjenTekst = " Neki tekst s prazninama. ";
echo "|" . trim($neuredjenTekst) . "|"; // |Neki tekst s prazninama.|
?>
Podjela i spajanje stringova
explode($delimiter, $string): Dijeli string u polje (array) stringova, koristeći navedeni delimiter (razdjelnik).implode($delimiter, $array): Spaja elemente polja u jedan string, koristeći navedeni delimiter.
<?php
$tagovi = "php,web,programiranje,tutoriali";
$nizTagova = explode(",", $tagovi); // Array: ['php', 'web', 'programiranje', 'tutoriali']
print_r($nizTagova);
$drugiNiz = ['jabuka', 'kruska', 'sljiva'];
$spojenTekst = implode(" i ", $drugiNiz); // jabuka i kruska i sljiva
echo $spojenTekst;
?>
Escape sekvence
Escape sekvence su posebni nizovi znakova koji se koriste unutar stringova (posebno unutar dvostrukih navodnika) za predstavljanje znakova koje je teško ili nemoguće izravno upisati.
Neki uobičajeni primjeri:
\n: Nova linija (new line)\t: Tabulator\$: Znak dolara (ako ne želite da se tretira kao varijabla)\": Dvostruki navodnik (unutar dvostrukih navodnika)\': Jednostruki navodnik (unutar jednostrukih navodnika)\\: Backslash
<?php
echo "Prvi red.\nDrugi red s \t tabulatorom.";
echo "<br>";
echo "Cijena je \$100.";
echo "<br>";
echo "Ovo je tekst s \"navodnicima\" unutar stringa.";
?>
Heredoc i Nowdoc sintaksa
Za vrlo duge stringove ili stringove s mnogo navodnika i novih linija, PHP nudi heredoc i nowdoc sintaksu.
- Heredoc (
<<<IDENTIFIER): Ponaša se kao string u dvostrukim navodnicima (podržava varijable i escape sekvence). - Nowdoc (
<<<'IDENTIFIER'): Ponaša se kao string u jednostrukim navodnicima (sadržaj se tretira doslovno, bez interpolacije varijabli ili obrade escape sekvenci).
<?php
$ime = "Jana";
$heredocTekst = <<<EOT
Ovo je višelinijski tekst.
Varijabla \$ime će se interpolirati: $ime.
Možete koristiti "navodnike" bez bježanja.
EOT;
echo $heredocTekst;
$nowdocTekst = <<<'END_TEXT'
Ovo je drugi višelinijski tekst.
Varijabla $ime se NEĆE interpolirati.
\n Ni escape sekvence se ne procesiraju.
END_TEXT;
echo "<br><br>";
echo $nowdocTekst;
?>
Dobre prakse
- Koristite odgovarajuće navodnike: Odlučite se za jednostruke ili dvostruke navodnike ovisno o tome trebate li interpolaciju varijabli ili escape sekvence. Za performanse, jednostruki navodnici su neznatno brži ako vam ne trebaju posebne mogućnosti dvostrukih.
- Obratite pažnju na encoding: Uvijek koristite UTF-8 encoding za vaše datoteke i baze podataka. Kada radite s duljinom ili podstringovima koji sadrže više-bajtovne znakove (kao što su hrvatska slova), koristite
mb_*funkcije (mb_strlen(),mb_substr()) umjesto standardnihstr*()funkcija. - Sigurnost: Kada ispisujete korisnički unos na web stranicu, uvijek ga “očistite” pomoću funkcija poput
htmlspecialchars()kako biste spriječili XSS (Cross-Site Scripting) napade. Kada radite s bazama podataka, koristite pripremljene izjave (prepared statements) kako biste spriječili SQL injection. - Čitljivost koda: Duge konkatenacije mogu postati nečitljive. Razmislite o korištenju
sprintf()ili heredoc sintakse za složenije stringove.
Zaključak
Stringovi su temeljni dio PHP programiranja i ključni za gotovo svaku web aplikaciju. Razumijevanje načina na koji PHP radi sa stringovima, korištenje pravih funkcija za prave zadatke i primjena dobrih praksi osigurat će vam pisanje robustanog, sigurnog i efikasnog koda. Nadam se da vam je ovaj članak pružio sveobuhvatan uvid u svijet PHP stringova i potaknuo vas na daljnje eksperimentiranje!
