
Előző heti leckénkben megismerkedtünk a strpos funkcióval, ma pedig folytatjuk a stringek világában való kalandozásunkat.
Egy programozó eszköztárában fontos elem az a tudás is, amelynek segítségével a PHP-string részeit új értékekre cserélhetjük. A str_replace funkció hasonlóan működik, mint a szövegszerkesztők „Replace All” parancsa, mely lehetővé teszi, hogy megadjuk a szót, melyet le szeretnénk cserélni, valamint azt a szót, amelyikre cserélni szeretnénk, majd elvégzi a szócserét az egész dokumentumot átfésülve.
A str_replace paraméterei
A str_replace funkciónak három paramétere van, ezek feltétlenül szükségesek ahhoz, hogy a funkció megfelelően működjön. A funkció így fest:
str_replace(search, replace, original_string)
1. search — Ez az, amire rákeresünk a stringben. Ez lehet egy string vagy egy tömb is.
2. replace — Minden találat a searchre ezzel az értékkel lesz helyettesítve. Ez lehet egy string vagy egy tömb is.
3. original_string — Ezen belül fog működni a search/replace. A str_replace funkció az original_string módosított változatát eredményezi, miután lefut.
Egy egyszerű példa a str_replace funkcióra
Képzeljük el, hogy egy iskolának dolgozunk, és egy olyan weboldalt kell létrehoznunk, amely a diákok szüleinek szól. A weboldalnak van egy bemutatkozó stringje, melyet testre szabunk aszerint, hogy a diák fiú-e vagy lány. A str_replace funkcióval ez nagyon egyszerű.
PHP-kód:
// a string amit testre kell szabni
$rawstring = 'Üdvözöljük a szülőket. Az Önök replaceme iskolánk tanulója!';
// fiú string
$malestr = str_replace('replaceme', 'fia', $rawstring);
// lány string
$femalestr = str_replace('replaceme', 'lánya', $rawstring);
echo 'Fiú: ' . $malestr . '<br />';
echo 'Lány: ' . $femalestr;
Megjelenítés a böngészőben:
Fiú: Üdvözöljük a szülőket. Az Önök fia iskolánk tanulója!
Lány: Üdvözöljük a szülőket. Az Önök lánya iskolánk tanulója!
Ennek a két, nemre szabott stringnek köszönhetően sokkal jobb felhasználói élményt tudunk nyújtani a diákok szüleinek, amikor bejelentkeznek az iskola weboldalára a gyerekek adataival.
str_replace arrays: több csere egyszerre
Előző példánkban csak egy szót cseréltünk le a stringünkben (replaceme), de mi a teendő akkor, ha több szót szeretnénk lecserélni? Használhatjuk többször egymás után a funkciót, vagy létrehozhatunk egy olyan helyőrző tömböt (placeholder array) és egy második tömböt, amely azokból az értékekből áll, amelyekre cserélni szeretnénk az eredeti értékeket. Ezzel a második megoldással egyszerre tudjuk lecserélni az összes szót.
Kulcsfontosságú, hogy megértsd, ezzel a technikával valójában két tömböt hozunk létre, melyet az értékcserére használunk. A helyőrző első eleme a csereértékek első elemére cserélődik, a helyőrző második eleme a csereértékek második elemére cserélődik, és így tovább.
Bővítsük ki előző példánkat, és lássuk, hogyan festene egy teljes formalevél, melyet a szülőknek szánunk!
PHP-kód:
// a string amit testre kell szabni
$rawstring = 'Üdvözöljük, kedves szülő! <br />
A gyermek egy kiváló diákunk!
Hisszük, hogy a névmás sokat tanul nálunk.<br />
A tanárok kedvelik a névmás2, és gyakran dicsérik: "Ügyes nem!"<br />';
// helyőrző tömb
$placeholders = array('gyermek', 'névmás', 'névmás2', 'nem');
// fiú csereértékek
$male_vals = array('fia', 'fiú', 'fiát', 'kisfiú');
// lány csereértékek
$female_vals = array('lánya', 'lány', 'lányát', 'kislány');
// fiú string
$malestr = str_replace($placeholders, $male_vals, $rawstring);
// lány string
$femalestr = str_replace($placeholders, $female_vals, $rawstring);
echo 'Fiú: ' . $malestr . '<br />';
echo 'Lány: ' . $femalestr;
Megjelenítés a böngészőben:
Fiú: Üdvözöljük, kedves szülő!
A fia egy kiváló diákunk! Hisszük, hogy a fiú sokat tanul nálunk.
A tanárok kedvelik a fiú2 és gyakran dicsérik: "Ügyes kisfiú!"
Lány: Üdvözöljük, kedves szülő!
A lánya egy kiváló diákunk! Hisszük, hogy a lány sokat tanul nálunk.
A tanárok kedvelik a lány2 és gyakran dicsérik: "Ügyes kislány!"
Megjegyzés: Megfigyelheted, hogy van egy hiba a kódban. A névmás2 nem úgy lett lecserélve, ahogy szerettük volna (a stringjeinkben fiú2 és lány2 jelent meg, a fiát és lányát helyett). Ez azért történt, mert a névmás lett először lecserélve, így a névmás szó a névmás2-ben lecserélődött fiú és lányra, így fiú2 és lány2 lett. Amikor a névmás2 lett cserélve, nem volt találat, így a stringben nincs fiát és lányát szó.
Ahhoz, hogy elkerüljük ezt a problémát, a névmás2-t kell előrehoznunk a helyőrző tömbben, és megfelelően megváltoztatni a csereértékek sorrendjét is.
PHP-kód:
// helyőrző tömb
$placeholders = array('gyermek', 'névmás2', 'névmás', 'nem');
// fiú csereértékek
$male_vals = array('fia', 'fiát', 'fiú', 'kisfiú');
// lány csereértékek
$female_vals = array('lánya', 'lány', 'lányát', 'kislány');
Megjelenítés a böngészőben:
Fiú: Üdvözöljük, kedves szülő!
A fia egy kiváló diákunk! Hisszük, hogy a fiú sokat tanul nálunk.
A tanárok kedvelik a fiát, és gyakran dicsérik: "Ügyes kisfiú!"
Lány: Üdvözöljük, kedves szülő!
A lánya egy kiváló diákunk! Hisszük, hogy a lány sokat tanul nálunk.
A tanárok kedvelik a lányát, és gyakran dicsérik: "Ügyes kislány!"
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:
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.