Függvény neve | Leírás |
---|---|
strlen | Szö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. |
strstr | A megadott karakterlánc tetszőleges részét adja vissza. |
substr | Szöveg egy meghatározott részének kiválasztása. |
strcmp | Két string összehasonlítása. |
strpos | String keresése másik stringben. |
explode | Egy string szétdarabolása megadott elválasztó szerint |
implode | Tömb összefűzése egy string-be megadott elválasztóval. |
chr | ASCII 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.) |
ord | String típusú karakterhez tartozó, ASCII kódértéket állítja elő. |
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:
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 $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!
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: |
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. |
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!
<?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 |
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: a
|
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 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: Ã
|
Oldal elejére!
<?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!
<?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!
<?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!
<?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!