String műveletek függvényekkel

Gyakori műveletek karakterláncokkal

Szövegkezelés referencia, fontosabb függvényei.
Függvény neveLeírás
strlenSzöveg hosszának meghatározása. (Eltérés van: ANSI és UTF-8 kódolásnál.)
strstrA megadott karakterlánc tetszőleges részét adja vissza.
substrSzöveg egy meghatározott részének kiválasztása.
strcmpKét string összehasonlítása.
strposString keresése másik stringben.
explodeEgy string szétdarabolása megadott elválasztó szerint
implodeTömb összefűzése egy string-be megadott elválasztóval.
chrASCII kódértékhez tartozó string típusú karakteres értéket állítja elő. (Eltérés van: ANSI és UTF-8 kódolásnál.)
ordString típusú karakterhez tartozó, ASCII kódértéket állítja elő.

String, azaz, karakterlánc függvényekről bővebben. Katt ide!


Megjegyzés:
A PHP strlen, chr, ord, függvények alkalmazásánál figyelni kell, a fájl kódolására.
ANSI kódolásnál:
- Szerverre telepített php fájloknál, ékezetes karakterek hibásan jelennek meg.
- Otthon Windows rendszeren nincs probléma.

UTF-8 kódolásnál:
- strlen függvény: Minden ékezetes karaktert, 2-szer számol.
- chr függvény: Minden ékezetes karaktert, így jelöl: Hibajelző

Külső fájlból történő szövegek beolvasásakor, ha ékezetes karaktert is tartalmaz, a beolvasó PHP fájl és szöveget tartalmazó fájl kódolásának egyezni kell.



PHP utasítási jelek

  1. A PHP utasításokat mindig egy meghatározott karaktersorral kell kezdeni és bezárni: <?php nyitó és a ?>záró elem!
  2. PHP-ben, string típus jelölésénél, az aposztrófban ( ' ' ) és az idézőjelben ( " " ) lévő karaktersorozat más-más jelentéssel bír.
  3. Az utasításokat pontosvessző ( ; ) zárja, hasonlóan, például a JavaSchrip vagy C nyelvhez.
  4. Minden változó azonosítója, a $ jellel kezdődik.
  5. A legegyszerűbb utasítás: echo nyelvi struktúra, vagy a visszatérési értékkel rendelkező print.
  6. Az echo , vagy a print segítségével lehet kihasználni igazán a php-t.
    Közvetlenül lehet írni a készülő HTML dokumentumba, melynek kiterjesztése php.
    Akár, formázott szöveget is, melynek stílusait külön CSS, azaz stíluslapon határozzuk meg.

 

A konkatenációs operátor ( . )
A PHP ezzel az egy stringoperátorral rendelkezik.

<?php
$keresztnev = "Körte";
$vezeteknev = "Vilmos";
$teljes_nev = $vezeteknev . " " . $keresztnev;
echo "A vezetéknév és keresztnév : <b>$teljes_nev</b>";
?>
Eredmény megjelenése:

A vezetéknév és keresztnév : Vilmos Körte
Ha, csak a változó nevét akarjuk kiíratni,
a $ jel elé be kell írni egy vissza per ( \ ) jelet


<?php
$keresztnev = "Körte";
$vezeteknev = "Vilmos";
$teljes_nev = $vezeteknev . " " . $keresztnev;
echo "A vezetéknév és keresztnév : <b> \$teljes_nev</b>";
?>
Eredmény megjelenése:

A vezetéknév és keresztnév : $teljes_nev

 

Oldal elejére!

A STRLEN() függvény, UTF-8 kódolásnál.

Szerepe:
Gyakorlatban legtöbbször, űrlapok vagy adatlapok szövegmezőibe írt karakterlánc hosszának megállapítása.
Az űrlap vagy adatlap készítője, előre meghatározhatja, hogy az egyes adatmezőkbe hány karaktert kell minimum vagy maximum beírni.
Igénybe vehető a függvény, adatbázisban tárolásra kerülő adatok ellenőrzése során is.

- A karakterláncok (stringek) hosszát határozza meg.
- Haznos, ha a sztringben lévő karakterek számát kell meghatározni.
- Adatbázisban tárolásra kerülő adatok ellenőrzésére is igénybevehetjük.

Példa:
Körte (5 karakter) + Vilmos (6 karakter) + a szóköz (1 karakter) = 12
Eredmények: ANSI kódolásnál = 12; UTF-8 kódolásnál = 13;
UTF-8 kódolásnál az ékezetes karaktereket, duplán számolja!

<?php
$keresztnev = "Körte"; $vezeteknev = "Vilmos";
$teljes_nev = $vezeteknev. " " .$keresztnev;
$sztringhossz = strlen ($teljes_nev);
echo "A teljes név, karakterláncának hossza (száma): <b>$sztringhossz</b>";
?>
Eredmény megjelenése:

A teljes név, karakterláncának hossza (száma):
13
<?php
$dokument = "Ez egy dokumentum teljes tartalma. Milyen hosszú?";
$dokument_hossz = strlen ($dokument);
echo "A teljes dokument, karakterláncának hossza: $dokument_hossz ";
?>
Eredmény megjelenése:

A teljes dokument, karakterláncának hossza:
50


Stringek hossza, azaz, száma.
PHP szerint.JavaScript szerint
- Eger - Stringek száma: 4
- Egér - Stringek száma: 5
- Reszelek - Stringek száma: 8
- Rüszülök - Stringek száma: 11
- aeiou - Stringek száma: 5
- áéíóú - Stringek száma: 10


Oldal elejére!

A STRSTR() függvény

Szerepe:
Egy adott szövegrészből megállapítani, hogy az általunk megadott karakterlánc (betű, szó, szóköz) létezik-e? Ha igen, akkor az első előfordulási helytól, milyen karakterlánc követi? ( Betű, szó, vagy mondatrész ).

A megadott karakterlánc tetszőleges részét adja vissza.
Az általunk megadott karakter, vagy szövegrész első előfordulásától kezdve, írja ki, a további karakterláncot.

A következő példában, megadjuk a szóközt ( " "), és az ezt követő részt (karakterláncot), kiíratjuk.

<?php
$keresztnev = "Körte"; $vezeteknev = "Vilmos";
$teljes_nev = $vezeteknev. " " .$keresztnev;
$szokoz_utan = strstr ($teljes_nev, " ");
echo "A szóköz utáni rész: <b>$szokoz_utan</b>";
?>
Eredmény megjelenése:

A szóköz utáni rész: Körte
<?php
$szoveg = "Ez egy teszt szöveg, melyben tetszés szerint keresgélünk.";
$ez_utan="szöveg";
$kovetkezo = strstr ($szoveg, $ez_utan);
echo "A megadott szó, és az azt követő szövegrész:<br />$kovetkezo";
?>
Eredmény megjelenése:

A megadott szó, és az azt követő szövegrész:
szöveg, melyben tetszés szerint keresgélünk.
A "szöveg" szó, kétszer is szerepel, de mi, a második utáni részt szeretnénk kiíratni.
<?php
$szoveg = "Teszt szöveg, ez is szöveg, melyben tetszés szerint keresgélünk.";
$ez_utan="is szöveg";
$kovetkezo = strstr ($szoveg, $ez_utan);
echo "A megadott karaktarlánc, és az azt követő szövegrész:<br />$kovetkezo";
?>
Eredmény megjelenése:

A megadott karaktarlánc, és az azt követő szövegrész:
is szöveg, melyben tetszés szerint keresgélünk.


Oldal elejére!

A STRPOS() függvény

Szerepe:
Egy adott szövegrészből megállapítani, hogy a keresett karakterlánc (betű vagy szó) létezik-e benne. Ha igen, akkor a függvény meghatározza, hogy a karaktersorozatban, hányadik helyet foglalja el.
A függvény nullával ( 0 ) kezdi a sorszámozást.
Lehet egy szó, vagy hosszabb szövegrész, függvényünk az ott található karakterláncot részeire bontja, azaz karakterenként (betűkként és szóközökként) tömbindex formájában tárolja

A keresett sztring kezdő poziciója.
Az első karakter poziciója = "0" a másodiké="1" és így tovább.
A Vilmos Körte szövegben, keressük az "o" karakter első előfordulási pozicióját

<?php
$vezeteknev = "Vilmos"; $keresztnev = "Körte";
$teljes_nev = $vezeteknev. " " .$keresztnev;
$betu_helye = strpos ($teljes_nev, "o");
echo "A keresett betű poziciója: <b>$betu_helye</b>";
?>
Eredmény megjelenése:

A keresett betű poziciója: 4


A Körte szövegben, keressük az "ő" és "r" és "e" karakterek első előfordulási pozicióját.
Problémát jelent, ha a szöveg ékezetes karaktert is tartalmaz.
Ékezetes betűket duplán számolja, ezért az r pozíciója 2-es helyett 3 lesz, e pozíciója 4-es helyett 5 lesz.

<?php
$nev= "Körte"; 
$b1 = strpos ($nev, "ö");
echo 'Az ö betű poziciója: '.$b1.'<br>';
$b2 = strpos ($nev, "r");
echo 'Az r betű poziciója: '.$b2.'<br>';
?>
Az ö betű poziciója: 1
Az r betű poziciója: 3
Az e betű poziciója: 5

 



Következő mondatot, egy külső "txt" fáj tartalmazza, melyet beolvastatunk és tesztelünk.
A "txt" fájl kódolásának egyezni kell, PHP fájlunk kódolásával!

Mondat: Ez a mondat, egy teszt mondat, melyben kereshetünk.
Az "o" betű, kétszer is szerepel mondatunkban, keressük meg, a második "o" betű pozícióját.
<?php
$mf= fopen("./szoveg.txt", "r");                            // Munkafájl elérési útvonala. Megnyitása olvasásra (" r ")
$fajlmeret= filesize("./szoveg.txt");                      // Dokumentum tartalmának mérete.
$tartalom= fread($mf, $fajlmeret);                       // Dokumentum teljes tartalmának beolvasása.
$elso= strpos ($tartalom, "o");                           // Első "o" betű pozíciója.

rewind($mf);                                                         // Fájlpozíció-mutató, a tartalom elején legyen.
$poz= $elso+1;                                                    // Fájlpozíció-mutató pozíciója, az első "o" betű után legyen.
$elso_utan= fseek($mf,$poz);                                // Fájlpozíció-mutató pozíciónálása.

$kov_karakterhossz= $fajlmeret-$poz;                    // Az első "o" -betű utáni, karakterlánc hossza.
$kov_szoveg= fread($mf, $kov_karakterhossz);        // Következő karakterláncok beolvasása.
$masodik= (strpos ($kov_szoveg, "o")+1);               // Kovetkező szovegrészben, az "o" betű pozíciója.

$tartalom_elejetol= ($elso+$masodik);                    // Tartalom elejétől, a második "o" betű pozíciója

echo "Dokumentum tartalma: <br /><b>". $tartalom."</b><br />";
echo "Az első o-betű pozíciója: ".$elso."<br /><br />"; 
echo "Az első o-betű utáni  szövegrész:<br /><b>". $kov_szoveg."</b><br />";
echo "Második szövegben, az o-betű pozíciója: ". $masodik."<br /><br />";
echo "Tartalom elejétől, a második o-betű pozíciója: ".$elso."+".$masodik." = ".$tartalom_elejetol."<br />";

fclose ($mf);                                //Megnyitott munkafájl bezárása.
?>
Programunk eredménye:

Dokumentum tartalma: Ez a mondat, egy teszt mondat, melyben kereshetünk.
Az első o-betű pozíciója: 6

Az első o-betű utáni, szövegrész: ndat, egy teszt mondat, melyben kereshetünk.
Második szövegben, az o-betű pozíciója: 18

Tartalom elejétől, a második o-betű pozíciója: 6+18 = 24


Oldal elejére!

A CHR() függvény

A CHR() függvény eredményénél eltérés van, ANSI és UTF-8 kodolásnál.
UTF-8 kodolásnál, ékezetes karakterek helyett, ez jelenhet meg:

Az ASCII kódértékhez tartozó string típusú karakteres értéket állítja elő.


<?php
$szam1=97;
$szam2=225;
$ASC1_karakter = chr($szam1);
$ASC2_karakter = chr($szam2);
echo "<u>A decimális formában megadott</u><br />
97-es ASCII-kód megfelelője: <b> ".$ASC1_karakter."</b> - betű";
echo "<br> 225-ös ASCII-kód megfelelője:<b> ".$ASC2_karakter."</b> - betű";
?>

Eredmény megjelenése:

A decimális formában megadott
97-es ASCII-kód megfelelője: a - betű
225-ös ASCII-kód megfelelője: - betű

- a - karakter html kódja: &#97;
- á - karakter html kódja: &#225;
- Á - karakter html kódja: &#193;

Egyes karakterek, nem találhatók a számítógép billentyűzetén, de ha szükségünk van rájuk, akkor a chr() függvény zárójelei között megadhatjuk.

 

Oldal elejére!

Az ORD() függvény.

Az ORD() függvény eredményénél eltérés van, ANSI és UTF-8 kodolásnál.
UTF-8 kodolásnál, ékezetes karakterek kódszáma, helytelenül jelenhet meg.

A string típusú karakterek, ASCII kódját állítja elő.


<?php
$string1='a';
$string2='á';
$string1_kodszama = ord($string1);
$string2_kodszama = ord($string2);
echo "<u>A string formában megadott</u><br />
- a - betű ASCII-kódja: <b> ".$string1_kodszama." </b>";
echo "<br /> - á - betű ASCII-kódja:<b> ".$string2_kodszama."</b>"; ?>

Eredmény megjelenése:

A string formában megadott
- a - betű ASCII-kódja: 97
- á - betű ASCII-kódja: 195
- 195 - kódszám, a következő html karakternek felel meg: Ã
- 225 - kódszám, a következő html karakternek felel meg: á

 

Oldal elejére!

Az explode() függvény

explode() string szétdarabolása, megadott elválasztó szerint.
<?php
Darabolás: Minden szóköznél.
$mondat="Ezt a mondatot, szavaira bontjuk szét, most!";
$darab=explode(" ",$mondat);
echo "$darab[0] <br />";
echo "$darab[1] <br />";
echo "$darab[2] <br />";
echo "$darab[3] <br />";
echo "$darab[4] <br />";
echo "$darab[5] <br />";
echo "$darab[6] <br />";
?>
Ezt
a
mondatot,
szavaira
bontjuk
szét,
most!
<?php
Darabolás: A kettőspontoknál. A feldarabolt részek, változóhoz rendelése.
$data = "valami:*:1823:5000::/otthon/valami:/három/négy";
list($elso, $jel, $szam, $kerek, $ures, $otthon, $utolso) = explode(":", $data);
echo "$elso <br />";
echo "$jel <br />";
echo "$szam <br />";
echo "$kerek <br />";
echo "$ures <br />";
echo "$otthon <br />";
echo "$utolso <br />";
?>
valami
*
1823
5000

/otthon/valami
/három/négy
<?php
$adatok = 'egy|kettő|három|négy';
// positive limit
print_r(explode('|', $adatok, 2));

echo "<br /><br />";

// negative limit (PHP 5.1)
print_r(explode('|', $adatok, -1));
?>
Array ( [0] => egy [1] => kettő|három|négy )

Array ( [0] => egy [1] => kettő [2] => három )

 

Oldal elejére!

A substr() függvény

substr() Szöveg, egy meghatározott részének kiválasztása.
<?php
$adat="abcdef";
echo substr($adat, 1). "<br />";     // bcdef
echo substr($adat, 1, 3). "<br />";  // bcd
echo substr('abcdef', 0, 4). "<br />";  // abcd
echo substr('abcdef', 0, 8). "<br />";  // abcdef
echo substr('abcdef', -1, 1). "<br />"; // f

//Egy speciális karakterre elérése
//Így is elérhetjük "szögletes zárójelek közé írjuk, a pozíció számot"
$string = 'abcdef';
echo $string[0]. "<br />";                         // a
echo $string[3]. "<br />";                         // d
echo $string[strlen($string)-1]. "<br />";     // f
?>
Programunk eredménye:
bcdef
bcd
abcd
abcdef
f


a
d
f

Negativ start, azaz visszafelé

<?php
$resz01 = substr("abcdef", -1);    // returns "f"
$resz02 = substr("abcdef", -2);    // returns "ef"
$resz03 = substr("abcdef", -3, 1); // returns "d"

echo "$resz01 <br />";
echo "$resz02 <br />";
echo "$resz03 <br />";
?>
f
ef
d

Negativ hossz, azaz visszafelé

<?php
$nhossz01 = substr("abcdef", 0, -1);  // returns "abcde"
$nhossz02 = substr("abcdef", 2, -1);  // returns "cde"
$nhossz03 = substr("abcdef", 4, -4);  // returns false
$nhossz04 = substr("abcdef", -3, -1); // returns "de"

echo "$nhossz01 <br />";
echo "$nhossz02 <br />";
echo "$nhossz03 <br />";
echo "$nhossz04 <br />";
?>
abcde
cde

de

 

Oldal elejére!

A strcmp() függvény

strcmp() Két string összehasonlítása.
<?php
echo strcmp("Hello world!","Hello world!");
echo "<br /><br />";
echo strcmp("Hello world!","Hello világ!");

echo "<br /><hr></hr><br />";

$zold="zöld szín";
$piros="piros szín";
echo strcmp($zold,$zold);
echo "<br /><br />";
echo strcmp($zold,$piros);
?>
0

1



0

10

 

Oldal elejére!

Az implode() függvény

Az implode() függvény.
Tömb összefűzése egy string-be megadott elválasztóval.
<?php
$tomb = array('Hello','World!','Kezdem','érteni!');
echo implode(" ",$tomb);
?>
Hello World! Kezdem érteni!
<?php
$tomb = array('Hello','World!','Kezdem','érteni!');
echo implode(" | ",$tomb);
?>
Hello | World! | Kezdem | érteni!
<?php
$tomb = array('Hello','World!','Kezdem','érteni!');
echo implode(": ",$tomb);
?>
Hello: World!: Kezdem: érteni!
<?php

$array = array('vezetéknév', 'email', 'telefon');
$elvalasztas_vesszonel = implode(", ", $array);

echo $elvalasztas_vesszonel; // vezetéknév,email,telefon

// Üres string használata esetén egy üres tömb:
var_dump(implode('hello', array()));

?>
vezetéknév, email, telefon

string(0) ""

 

Oldal elejére!