home 2024. március 15., Kristóf napja
Online előfizetés
A PHP substr_replace funkciója
Erdsoft
2019.07.11.
LXXIV. évf. 27. szám
A PHP substr_replace funkciója

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.

  1. Eredeti string — Ez az eredeti stringünk, melyen végrehajtjuk a műveletet.
  2. 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).
  3. 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.
  4. 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!

 


 

Nyereményjáték

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.
 
Heti kérdés:
 
Mi történik, ha a funkció opcionális 4. paraméterének 0-t adunk meg?
1. Az egész szöveg le lesz cserélve
2. Egy karakter sem lesz lecserélve, és beszúrás () lesz végrehajtva
3. Egy karakter sem lesz lecserélve
 
A választ a tanulok@erdsoft.com e-mail-címre kell elküldeni, a tárgysorba pedig a következőt kell beírni: HÉTNAP-TANULOK. Sok szerencsét!
 

 

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.

Hozzászólások
Hozzászólások
0
Hozzászólás küldése
1000 karakter áll rendelkezésére
A megjegyzésekben kifejtett vélemények a hozzászólások szerzőinek magánvéleményei, és nem tükrözik az internetes portál véleményét. A megjegyzéseket moderáljuk és jóváhagyjuk az általános szerződési feltételeknek megfelelően.
Támogatóink
Az oldal sütiket használ, hogy személyre szabjuk a tartalmakat és reklámokat, hogy működjenek a közösségi média funkciók, valamint hogy elemezzük a weboldal forgalmát. Bővebben a "Részletek mutatása" gombra olvashat.
Az oldal sütiket használ, hogy személyre szabja az oldalon megjelenő tartalmat és reklámokat..