traži:  
 php.com.hr >

(...nastavak)
 


Primjer 23 c): Pronalaženje pozicije prvog pojavljivanja znaka ili stringa u stringu i ispis ukupnog broja pojavljivanja.

 

<hr>

<h3>Ispisivanje pozicije pronadenog stringa ili znaka unutar zadanog stringa</h3>

<?

// ipsisivanje pozicije prvog nalazenja trazenog strina unutar zadanog stringa

$int_pozicija=strpos($string,$trazeni);

echo $int_pozicija;

?>

<hr>

<h3>Ukupan broj pojavljivanja traženog znaka ili stringa</h3>

<?

// racunanje broja pojavljivanja nekog stringa ili znaka unutar stringa

$suma=substr_count($string,$trazeni);

echo "Broj pojavljivanja :$suma";

?>

Objašnjenje:

// ipsisivanje pozicije prvog nalazenja trazenog strina unutar zadanog stringa

$int_pozicija=strpos($string,$trazeni);

echo $int_pozicija;


U ovom dijelu koda ispisujemo prvu poziciju pronađenog stringa u zadanom stringu. Za to se koristi funkcija strpos($str_zadani,$str_trazeni);

Funkcija vraća integer vrijednost koja predstavlja poziciju prvog znaka traženog stringa unutar zadanog stringa. Ukoliko trazeni string ne postoji unutar zadanog stringa funkcija vraća vrijednost False.

Napomena : Brojanje pozicije kreće od 0!!!

// racunanje broja pojavljivanja nekog stringa ili znaka unutar stringa

$suma=substr_count($string,$trazeni);

echo "Broj pojavljivanja :$suma";

Ovaj blok naredbi računa i ispisuje ukupan broj pojavljivanja traženog stringa unutar zadanog stringa. Za računanje se koristi funkcija substr_count($str_zadani,$str_trazeni)

Funkcija vraća inteher vrijednost koja reprezntira ukupan broj pojavljivanj traženog stringa unutar zadanog stringa. Funkcija vraća 0 ukoliko nema pojavljivanja. Ovo se interpretira kao False vrijednost unutar if strukture.

Primjer 23 d): Izvlačenje točno određenog dijela stringa

<hr>

<h3>Ispisivanje tocno odredenog dijela stringa</h3>

<?

// ispisvanje prvih 4 znaka stringa

$str_izvuceni=substr($string,0,4);

echo "Prva 4 znaka stringa : '$str_izvuceni'<br>";

// ispisivanje zadnja 4 znaka stringa

$str_izvuceni=substr($string,-4,4);

echo "Zadnja 4 znaka stringa : '$str_izvuceni'<br>";

// ispisivanje 10 znaka stringa

$str_izvuceni=substr($string,10,1);

echo "Deseti znak stringa : '$str_izvuceni'<br>";

// ispis 15 i svih ostalih znakova do kraja stringa

$str_izvuceni=substr($string,15);

echo "Svi znakovi od 15. znaka: '$str_izvuceni'<br>";

?>

 

Objašnjenje:

Za izvlačenje točno određenog dijela stringa koristi se funkcija
substr($str_zadani, $int_pocetna_pozicija, $int_broj_znakova)

Postoji više načina primjene ove funkcije, ovisno o komadu stringa kojeg želimo izvući.

 

// ispisvanje prvih 4 znaka stringa

$str_izvuceni=substr($string,0,4);

echo "Prva 4 znaka stringa : '$str_izvuceni'<br>";


Ovim načinom vadimo znakove od nultog znaka pa četiri slijedeća znaka. Ukoliko je potrebno izvući znakove sa kraja stringa funkciji dajemo kao početnu poziciji negativni broj.

// ispisivanje zadnja 4 znaka stringa

$str_izvuceni=substr($string,-4,4);

echo "Zadnja 4 znaka stringa : '$str_izvuceni'<br>";

Ovime govorimo PHP-u da počne izvlačiti znakove za zadanu vrijednost od kraja stringa, te da izvuče onoliko znakova od te pozicije koliko je zadano trećim argumentom.

Ukoliko treći argument ne postoji vraćaju se svi preostali znakovi od zadane pozicije do kraja stringa.

// ispis 15 i svih ostalih znakova do kraja stringa

$str_izvuceni=substr($string,15);

echo "Svi znakovi od 15. znaka: '$str_izvuceni'<br>";


Ukoliko je potrebo izvući samo jedan znak iz stringa funkciji kao treći argument dajemo 1 što će izvući samo znak sa zadane pozicije iz drugog argumenta.

// ispisivanje 10 znaka stringa

$str_izvuceni=substr($string,10,1);

echo "Deseti znak stringa : '$str_izvuceni'<br>";


U ovom slučaju smo mogli koristiti i drugu metodu koja je u nekim situacijama jednostavnija i praktičnija. Naime, string možemo zamisliti kao niz znakova i kako takvom možemo pristupati svakom znaku preko njegovog indeksa. Pozicije znakova tj. indeksi kreću od 0

// ispis 10 znaka stringa

echo $string[10];

Ova metoda se koristi kada želimo provjeravati svaki znak u stringu posebno. Da bi izvršili ovakav način šetnja kroz string možemo koristiti dvije metode.

Prva je korištenjem for petlje:

$duljina=strlen($string);

for ($i=0;$i<$duljina;$i++){

echo "[$i]=>".$string[$i]."<br>";

}

Da bi znali koliko se for petlja puta mora ponoviti moramo znati duljinu strniga. Nju dobijemo preko funkcije strlen($string) koja vraća integer vrijednost.

 

Drugi način je korištenjem while petlje.

$i=0;

while ($string[$i]){

echo "[$i]=>".$string[$i]."<br>";

$i++;

}

While petlji kao uvjet ponavljanja dajemo jedan znak iz stringa. Petlja će se izvršavati sve dok postoji neki znak na danom indeksu, a prekinut će se kada se na danom indeksu više ne nalazi znak. Problem kod ovog načina je taj što će se petlja prestati izvršavati ukoliko se na danom indeksu nalazi 0 (nula) čime ova metoda nije pogodna za sigurno šetanje kroz string.

Primjer 23 e) : Manipuliranje HTML markupa u stringu

<hr>

<h3>Manipulacija HTML stringova</h3>

<?

$str_HTML="<p>Ovo je prvi pragraf koji se prikazuje</p>".

"<p>Ovo je drugu paragraf,<br>ali on ima dva reda i jednu <b>boldanu</b> rijec</p>";

echo "<u>HTML koji se ureduje:</u><br>" . $str_HTML;

?>

<hr>

<h3>Zamjena HTML specijalnih znakova</h3>

<?

// zamjena specijalnih znakova

$str_bez_HTML=htmlspecialchars($str_HTML);

echo "<u>HTML sa zamijenjenim specijalnim znakovima:</u><br>" . $str_bez_HTML;

?>

<hr>

<h3>Zamjena nove linije sa &lt;br&gt; tagom</h3>

<?

$str_nl="Ovo je\nstring koji sadrzi\nvise linija";

echo "Originalni string:<br>$str_nl";

echo "<br><br>String sa zamjennom novih linija sa &lt;br&gt; tagom: <br>";

echo nl2br($str_nl);

?>

 

Rad sa HTML kodom je vrlo bitno pitanje u izradi web aplikacija što se tiče sigurnosti nekih aplikacija poput foruma, formi i sličnih aplikacija koje se oslanjaju na korisnički unos. HTML markupom militantni posjetitelj vrlo lako može natjerati aplikaciju da se ponaša nepredvidivo, čudno i koa rezultat takvog ponašan može doći do probijanja sigurnosti aplikacije ili preopterećenja te time i rušenje servera. Iz tog razloga vrlo je bitno da područja osjetljiva na HTML markup (ona koja prikazuju unesenu sadržaj kao npr. u forumu ili guestbooku) imaju validaciju unosa te da se sav HTML izbaci izunosa ili da se svi HTMl znakovi ( < , > , ' , ") zamjene sa kodovima za posebne znakove. Za ovo postoje ugrađene funkcije u PHP-u.

// zamjena specijalnih znakova

$str_bez_HTML=htmlspecialchars($str_HTML);

echo "<u>HTML sa zamijenjenim specijalnim znakovima:</u><br>" . $str_bez_HTML;

 

Ovaj fragment koda zamjenjuje sve HTML znakove sa njihovim kodovima za posebne znakove. Za ovo se koristi funkcija htmlspecialchars($str_HTML).

Njoj kao argument dajemo string za kojeg postoji mogućnost da sadrži HTML markup i ona vraća taj isti string za izmijenjenim HTML znakovima. Ova funkcija mijenja slijedeće znakove:

 

  • ' &' (ampersand) postaje '&amp;'
  • '"' (dupli navodnik) postaje '&quot;'.
  • ''' (Jednostruki navodnik) postaje '&#039;'
  • '<' (manje) postaje '&lt;'
  • '>' (veće) postaje '&gt;'

 

Druga funkcija koja služi istoj svrsi je htmlentities(). Ona također kao argument prima string i vraća ga sa izmenjenim znakovima. Razlika između ove dvije funkcije je ta što htmlentities()

Izmjenjuje sve znakove koji se mogu promijeneitiu u kodove specijalnih znakova. Ovo znači da će se i znakovi poput č,ć,Č,Đ… mijenjati u njihove reprezentacije u kodu za posebne zakove.

 

$str_nl="Ovo je\nstring koji sadrzi\nvise linija";

echo "Originalni string:<br>$str_nl";

echo "<br><br>String sa zamjennom novih linija sa &lt;br&gt; tagom: <br>";

echo nl2br($str_nl);


Druga stvar koja je vrlo česta u gore nevedim aplikacijama je formatiranje unesene vrijednosti. Naime, kada korisnik unosi neki tekst u tekst polje i pritisne enter da bi prenio unos u novi red na mjesto na mjestu na kojem je stisnut enter se nalazi '\n'. Kao što ste već vidjeli u prijašnjim primjerima, ovo se neće vidjeti pri HTMl prikazu ovog unosa u browseru već će se vidjeti tek kada se pogleda source dokumenta. Da bi izbjegli ovo u PHP-u postoji funkcija koja zamjenjuje '\n' sa <br> elementom tako da se novi red iz unosa stvarno prikaže kao novi red u pogledu unosa u browseru. Dotična funkcija je nl2br($str_nl)

 

Primejr 24: Rezanje i lijepljenje stringa

<?

$string="Ovo je string kojeg ćemo izrezati na više dijelova";

// rezanje stringa

$arr_izrezani=explode(" ",$string);

foreach($arr_izrezani as $kljuc => $vrijednost){

echo $kljuc . " => " . $vrijednost . "<br>\n";

}

?><hr><?

// lijepljenje stringa iz niza

$arr_stringovi=array("Ovo","je","string","kojeg","ćemo","zalijepiti");

$zalijepljeni=implode(" ",$arr_stringovi);

echo $zalijepljeni;

?>


Objašnjenje:

// rezanje stringa

$arr_izrezani=explode(" ",$string);

 

Ovaj fragment koda reže zadani string na taj način da podijeli zadani string na fragmente na taj način da je svaki novi fragment dio originalnog stringa između dva znaka koji smo dali kao uvjet razdvajanja u prvom argumentu funkcije. Svi novi fragmenti se spremaju u niz u kojem indeksi odgovaraju rednom broju fragmenta.
Da ovo malo ilustriram na praktičnom primjeru. :

 

// razdjeljivanje e-maila

$email='netko@negdje.com';

$arr_fragemnti=explode('@',$email);

echo 'nick : ' . $arr_fragemnti[0]; // ispisivanje imena iz e-mail adrse

echo 'domena : ' . $arr_fragemnti[1]; // ispisivanje domene e-mail adrese

 

Za fragmentiranje stringa se koristi funkcija explode($str_uvjet_razdvanjanja,$string_koji_se_razdvaja)

Funkcija prima kao prvi argument znak ili niz znakova koji služe za stvaranje fragmenata. Fragmenti će sadržavati sadržaj danog stringa u drugom argumentu koji se nalazi između dva ponavljanja prvog argumenta. Rezultat funkcije je niz koji sadrži nastale fragmente, a ukoliko se u danom stringu ne nalazi znak ili niz znakova kojim dijelimo string rezultat će biti niz koji sadrži originalni string u cijelosti na svom nultom indeksu.

 

// lijepljenje stringa iz niza

$arr_stringovi=array("Ovo","je","string","kojeg","ćemo","zalijepiti");

$zalijepljeni=implode(" ",$arr_stringovi);

echo $zalijepljeni;


Suprotni proces bi bio lijepljenje niza u novi string. Ovo je moguće korištenjem funkcije

implode($str_lijepilo,$arr_niz_koji_se_lijepi);

Funkcija uzima sve elemente niza iz drugog argumenta i spaja ih tako da zalijepi dva susjedna elementa niza pomoću stringa iz prvog argumenta

 

Zadaci :

1. Napisati skriptu koja će ispisati sve pozicije pronalaženja nekog stringa ili znaka u stringu te ukupan broj pronalazaka.
2. Napisati funkciju koja će zamijeniti sve hrvatske znakove u njihove nehrvatske zamjene (ć=>c,š=>s…, Ć=>C, Š=>S…)
3. Napisati skriptu koja će boldati sve riječi u stringu koje sadrže slovo 'z'
 



PHP
 © 2004 - 2008 php.com.hr