Práca v PHP so znakovou sadou Unicode môže byť pre programátorov oveľa zložitejšia ako v iných jazykoch. Výnimkou tak nie sú ani funkcie pre nahradzovanie reťazcov. Ak chce s nimi programátor efektívne pracovať, musí si naštudovať aspoň základnú problematiku multibyte zápisu znakov vo formáte UTF-8.Zoberme si nasledujúci príklad. Za úlohu máme zvýrazniť slovo "špec" v reťazci "Špecifikácia formátu dokumentu RTF.". Ako vidieť, na znaky z radu multibyte (znaky mimo rozsah ASCII) sa modifikátor i neaplikuje.Príklad: Štandardný postup pre zámenu reťazcov.
Pre podporu znakovej sady UTF-8 vo funkcii preg_replace() stačí iba drobná zmena a tou je pridanie modifikátora u. Bez pridania modifikátora u by bolo možné požadovaný výsledok dosiahnuť zmenou veľkosti písmen buď v texte pre vyhľadávanie alebo v texte, ktorý má byť hľadaný. V tomto prípade napríklad zmenou zápisu
$keyword = "špec"; na $keyword = "Špec";. Takéto zmeny veľkosti písmen ale nie je možné efektívne aplikovať, keďže text zväčša nie je typu konštanta, ale ľubovoľný reťazec. Príklad: Aplikovanie modifikátora u do regulárneho výrazu.
Po úprave regulárneho výrazu už bude funkcia preg_replace() vracať správny výsledok.
Záver
Vďaka modifikátoru u je možné efektívne pracovať s reťazcami typu multibyte a nie je potrebné si lámať hlavu s použitím funkcií z knižnice Multibyte String. 28.2.2013, Matej LednárKategória: PHPPHP,utf-8,regexp,programovanie,preg_replace,PHPŽiadna časť tohto článku nesmie byť reprodukovaná bez uvedenia autora a URL na túto stránku.Viac informácií nájdete v sekcii O projekte.