
A substr_replace funkció kiegészíti az előző leckénkben bemutatott str_replace funkciót. A substr_replace egy matematikai alapú cserefunkció, mely a kezdőpontokra és a hosszúságokra támaszkodva cseréli le a string egyes részeit, ahelyett, hogy a keresésre és a cserére fókuszálna.
A substr_replace négy paramétere
A substr_replace funkciónak három kötelező (eredeti string, cserestring, kezdőpont) és egy opcionális paramétere (hosszúság) van.
- Eredeti string — Ez az eredeti stringünk, melyen végrehajtjuk a műveletet.
- Cserestring — Ezt a stringet használjuk arra, hogy lecseréljünk mindent a stringen belül, a kezdőponttól a végső pontig (melyet a hosszúság határoz meg).
- Kezdőpont — Ez az a pozíció az eredeti stringben, amellyel a csere kezdetét jelöljük. A negatív érték megadásával meghatározhatjuk, hány karakterrel a string végétől kezdjük a műveletet.
- Opcionális hosszúság — Ez határozza meg, hogy hány karaktert szeretnénk lecserélni az eredeti stringben a kezdőponttól számítva. Ha nincs megadva a hosszúság, a string vége lesz a végpont. Ha az érték 0, akkor egy karakter sem lesz lecserélve, és beszúrás () lesz végrehajtva. A negatív érték a string végétől számolt karakterek számát határozza meg.
Egy példa a hosszúság paraméter megadása nélkül
Lássunk egy példát a funkció működésére! A következő substr_replace példa mutatja, mi történik akkor, ha kihagyjuk a hosszúság paramétert a különböző kezdőpontoknál.
PHP-kód:
// a string, melyet személyre kell szabni
$original = 'ABC123 Hello, Mr Kovacs! DEF321';
// kezdőpont 5
$sp5 = substr_replace($original, 'Five', 5);
// kezdőpont 12
$sp12 = substr_replace($original, 'Twelwe', 12);
// kezdőpont 0
$sp0 = substr_replace($original, 'Zero', 0);
// kezdőpont -1
$spneg1 = substr_replace($original, 'Minus 1', -1);
// Echo minden stringre
echo 'Eredeti string: ' . $original . '<br />';
echo 'Kezdőpont 5: ' . $sp5 . '<br />';
echo 'Kezdőpont 12: ' . $sp12 . '<br />';
echo 'Kezdőpont 0: ' . $sp0 . '<br />';
echo 'Kezdőpont -1: ' . $spneg1;
Megjelenítés a böngészőben:
Eredeti string: ABC123 Hello, Mr Kovacs! DEF321
Kezdőpont 5: ABC12Five
Kezdőpont 12: ABC123 HelloTwelwe
Kezdőpont 0: Zero
Kezdőpont -1: ABC123 Hello, Mr Kovacs! DEF32Minus 1
Ahogy a példa is mutatja, ha nem határozzuk meg a negyedik paramétert, a hosszúságot, a kezdőpont után minden lecserélődik a második paraméterre, azaz a cserestringre.
Megjegyzés: Az első csere az 5. pozíción ment végbe, mely az $original-ban a 3. karakter volt. Ez a 3 és minden, ami követte, le lett cserélve a cserestringre. Ne feledd, hogy a karakterek számolását a nullától kell kezdeni! Az $original stringet így címkézhettük volna:
A betű — 0. pozíció
B betű — 1. pozíció
C betű — 2. pozíció
1 karakter — 3. pozíció
2 karakter — 4. pozíció
3 karakter — 5. pozíció
A substr_replace funkció a hosszúság paraméter megadásával
Ha a fenti példa nem felel meg a céljainknak, és szeretnénk precízebbé tenni a funkciót, bizony bele kell merülnünk a részletekbe, és meg kell határoznunk a hosszúságot.
Tegyük fel, hogy meg akarunk szabadulni a csúnya pszeudoreferenciáktól (ABC123, DEF321) a string elején és végén. Mivel mindkét string hossza 6, és tudjuk, hogy az egyik a string elején, a másik pedig a végén van, az ABC123-ra a 0-t használhatjuk mint kezdőpontot, a DEF321-re pedig a -6 értéket. Azzal, hogy a cserestring üres "", valami hasonlót érhetünk el, mint a kiválasztás-törlés paranccsal a szövegszerkesztőkben.
PHP-kód:
// a string, melyet személyre kell szabni
$original = 'ABC123 Hello, Mr Kovacs! DEF321';
// az ABC123 eltávolítása és megőrzése a $cleanedstr-ben
$cleanedstr = substr_replace($original, '', 0, 6);
// a DEF321 eltávolítása a $cleanedstr-ből
$cleanedstr2 = substr_replace($cleanedstr, '', -6, 6);
// Echo minden stringre
echo 'Eredeti string: ' . $original . ' <br />';
echo 'Tiszta #1: ' . $cleanedstr . ' <br />';
echo 'Tiszta #2: ' . $cleanedstr2;
Megjelenítés a böngészőben:
Eredeti string: ABC123 Hello, Mr Kovacs! DEF321
Tiszta #1: Hello, Mr Kovacs! DEF321
Tiszta #2: Hello, Mr Kovacs!
Mielőtt továbblépnénk, gyakorolj egy kicsit a példán, hogy ráérezz, hogyan hatnak a kezdőpont és a hosszúság paraméterek a funkcióra.
Beszúrás a funkció segítségével
Azzal, hogy a hosszúság paramétert nullára állítjuk, megakadályozhatjuk, hogy a substr_replace funkció bármit is kitöröljön — így csak hozzá fogja adni a cserestringet az eredeti stringhez. Mikor használhatjuk a beszúrás műveletet? Például akkor, ha szeretnénk Kovács úr mellé még két személyt hozzáadni a példánkhoz. A beszúrás során egy új funkciót is alkalmazhatunk, mely a strlen nevet viseli. Nem nehéz azonban kitalálni, hogy ez a funkció a string lenght paramétert, azaz a karakterlánc hosszát jelöli.
Reméljük, a mai, stringekkel kapcsolatos leckénket sem találtad túl nehéznek. A jövő héten a stringek nagybetűsítésével fogunk foglalkozni. Addig is jó gyakorlást!
Rovatunk elsődleges célja, hogy közelebbről is bemutassa a legismertebb webtechnológiákat. Azok között az olvasók között, akik minden héten követik rovatunkat, azaz velünk tanulják a programozás alapjait és kitöltik a feladatsort, a sorozat végén egy laptopot sorsolunk ki.
Néhány szó rólunk:
Az ErdSoft (www.erdsoft.com) 2011-ben alakult meg. Csapatunkat a fiatalos lendület, a szakértelem, a folyamatos tanulás és tapasztalatgyűjtés jellemzi. Ügyfeleinknek igyekszünk teljes körű szolgáltatást nyújtani — bátran fordulhatnak hozzánk, legyen szó webfejlesztésről, alkalmazásokról, SEO-optimalizálásról, grafikai tervezésről, marketingről vagy szövegírásról. Csapatunk sikerét mi sem bizonyítja jobban, mint a több száz elkészült weboldal és a számos elégedett ügyfél Szerbiában, Magyarországon és az Egyesült Királyságban.