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.)
UTF-8 kódolásnál.
A count_chars(), jó a eredményt ad vissza, egy feltétel beiktatásával.
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!
Stringek, írásjelek, PHP kódszáma. 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.
- Hasznos, ha a stringben lévő karakterek számát kell meghatározni.
- Adatbázisban tárolásra kerülő adatok ellenőrzésekor is.

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 strlen() szerint.JavaScript length 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

Stringek hossza, azaz, száma, UTF-8 kódolásnál.
A strlen() és count_chars() szerint.
        <php
            $hubetuk = "Szórakoztató! Á Í Ú";               // 19 string, szóközt is beleértve.
            $hubetuktomb=count_chars($hubetuk,1);
			
            $stringek ='';
            foreach ($hubetuktomb as $index => $adat)		 
            {
                  if($index!=195 AND $index!=197) { $stringek = $stringek+$hubetuktomb[$index]; }
            }
		  
            echo ' <p>Karakterlánc hossza, azaz, stringek száma:<br>';
            echo ' Hibás a strlen() eredménye = '.strlen($hubetuk).'<br>';
            echo ' Jó a count_chars() eredménye = '.$stringek.'</p>';
        ?>
		
Eredmény:

Karakterlánc hossza, azaz, stringek száma:
Hibás a strlen() eredménye = 24
Jó a count_chars() eredménye = 19




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!