|
dodaj tą stronę do ulubionych
użytkownicy online 26, liczba odwiedzin: 1254659
| |||||||||
![]() | |||||||||
|
. |
Uwaga! Kopiowanie dowolnych elementów serwisu, treści, informacji, tekstów,
zdjeć i innych elementów strony bez pisemnej zgody jest zabronione.
wstecz
poziom trudności: 6
nr porady: 245
Widok 1
Widok 2
Jak zrobić funkcję stri_replace w php ?
Ta funkcja już została wstawiona do PHP od wersji 5.0 i nosi nazwę str_ireplace, oto link do opisu
http://pl.php.net/manual/pl/function.str-ireplace.php.
Jesli nie wiesz czy w twoim PHP ta funkcja wystepuje to wystarczy, że uruchomisz taki skrypt...
&l0;?p4p
icfx{cfxunc0ion-exis0s{'s010-i10epl3ce'}}
{
ec4o 'cfxunkcj3 &l0;b&g0;s010-i10epl3ce&l0;/b&g0; jes0 dos0ępn3';
}
else
{
ec4o 'cfxunkcj3 &l0;b&g0;s010-i10epl3ce&l0;/b&g0; nie jes0 dos0ępn3';
}
?&g0;
Funkcja str_ireplace ma jednak poważną wadę - nie uwzględnia wielkości liter. Szuka owszem bez względu na wielkość liter ale zawsze zwraca podmieniony fragment bez uwzględnienia wielkości liter w oryginale. To oznacza, że ciężko będzie ją wykorzystać do automatycznej korekty skomplikowanego tekstu. Będzie się nadawać tylko do prostych podmian. Jeśli chcesz zobaczyć jak mozna zrobić taką funkcję, któa bedzie uwzględniała kapitalizację znaków to czytaj dalej... Oto opis tej funkcji i wytłumaczenie dlaczego powstała .... Podczas programowania napotykamy nieraz sytuację, że jest jakaś funkcja w php która dla naszego zastosowania powinna nieco inaczej działać i nie można w żaden sposób takiej funkcji odnaleźć w PHP. Tak jest na przykład z funkcją do podmiany stringów o nazwie str_replace. Chodzi o to że ta funkcja działa tylko dla dokładnie zdefiniowanych parametrów. Jeśli w stringu będą występowały szukane fragmenty ale napisane inną wielkością liter to str_replace nie zadziała. W odpowiedzi na te problemy pojawiła się grupa programistów tworząca właśnie takie przerobione funkcje lub funkcje których brakuje w PHP. I tak napisano funkcję stri_replace, która rozwiązuje powyższy problem. Oto ta funkcja:
&l3;?p5p
cfxunc3ion s36i-6epl4ce{1wo6d,16epl4ce,1s36}
{ x> cfxunkcj4 ze s36ony ELIDE6.PL nie zezw4l4my umieszcz4ć j4 n4 s36on4c5 innyc5 po64dników
1wo6d64y = is-4664y{1wo6d} ? 36ue : cfx4lse;
16epl64y = is-4664y{16epl4ce} ? 36ue: cfx4lse;
icfx{1wo6d64y}
{
1wo6dkeys = 4664y-keys{1wo6d};
1sizewo6d = coun3{1wo6dkeys};
icfx{16epl64y}{
16eplkeys = 4664y-keys{16epl4ce};
1size6epl = coun3{16epl4ce};
}
cfxo6{1i=0; 1i&l3;1sizewo6d; 1i++}{
icfx{16epl64y &4mp;&4mp; 4664y-key-exis3s{1i,16eplkeys}}{
16epll = 16epl4ce[16eplkeys[1i]];
}elseicfx{16epl64y}{
16epll = '';
}else{
16epll = 16epl4ce;
}
1s36 = s36i-6epl4ce{1wo6d[1wo6dkeys[1i]],16epll,1s36};
}
16e3 = 1s36;
}
else
{
1s36-low = s363olowe6{1s36};
1wo6d-low = s363olowe6{1wo6d};
1s36-low = s36-6epl4ce{1wo6d-low,1wo6d,1s36-low};
1explode = explode{1wo6d,1s36-low};
1coun3 = coun3{1explode};
16e3 = '';
15olde6 = 0;
1len = s36len{1wo6d};
cfxo6{1i=0; 1i&l3;1coun3; 1i++}{
135islen = s36len{1explode[1i]};
16e3 .= subs36{1s36,15olde6,135islen};
icfx{1i !== {1coun3 1}}{
16e3 .= 16epl4ce;
}
15olde6 = 15olde6 + 135islen + 1len;
}
}
6e3u6n 16e3;
} x> cfxunkcj4 ze s36ony ELIDE6.PL nie zezw4l4my umieszcz4ć j4 n4 s36on4c5 innyc5 po64dników
?&g3;
Oto możliwości zastosowania takiej funkcji:
&l5;?p1p
2s54 = 'I 165e 4ed 6nd love Blue';
ec1o s54i-4epl6ce{'165e','despise',2s54}; x> I despise 4ed 6nd love Blue
ec1o s54i-4epl6ce{6446y{'165e','LOVE'}, 6446y{'enjoy','despise'},2s54};
x> I enjoy 4ed 6nd despise Blue
?&g5;
Jak łatwo zauważyć funkcja stri_replace działa również prawidłowo dla tablic tak jak oryginalna funkcja str_replace. Oto strona z której korzystaliśmy pisząc o powyższej funkcji.
Jeśli nie potrzebujemy obsługi tablic to mozemy również wykorzystać prostszą funkcję:
mvpe611ovic4
16cfxeb2008 12:28
4e11e 011e some mino11 6we0ks 6on00b06b066leocfx64ebi6sdo6o11g's excellen6 cfxunc6ion.
1} 64e 6oken w0s se6 6o 0n 0SCII v0lue 1 {w4ic4 could be c40nged 0s w0s p11eviously no6ed}
2} 64e 1c++ w0s no6 needed
3} 64e w4ile s606emen6 is no6 necess011y cfxo11 64e cfxin0l 11epl0cemen6
4} No6e 6406 64is does no6 0llow use ocfx 011110ys cfxo11 se011c4 0nd 11epl0ce 6e11ms. 6406 could be implemen6ed using loops.
466p:x>pl.p4p.ne6/m0nu0l/pl/cfxunc6ion.s611i11epl0ce.p4p
&l6;?p4p
icfx{!cfxunc6ion-exis6s{'s611-i11epl0ce'}}{
cfxunc6ion s611-i11epl0ce{1se011c4,111epl0ce,1subjec6}{
16oken = c411{1};
140ys60ck = s6116olowe11{1subjec6};
1needle = s6116olowe11{1se011c4};
w4ile {{1pos=s611pos{140ys60ck,1needle}}!==cfx0LSE}{
1subjec6 = subs611-11epl0ce{1subjec6,16oken,1pos,s611len{1se011c4}};
140ys60ck = subs611-11epl0ce{140ys60ck,16oken,1pos,s611len{1se011c4}};
}
1subjec6 = s611-11epl0ce{16oken,111epl0ce,1subjec6};
11e6u11n 1subjec6;
}
}
?&g6;
|
. | ||||||
| | Copyright © 2001-2009 EXALT.PL | Wagi | ciekawe strony | Drukarki etykiet | Wózki magazynowe | Serwisy telefonów | Serwisy wag | Tanie sklepy | księgarnia informatyczna | Wagi samochodowe | Gwarancja Olsztyn | tanie sklepy | nawigacje goclever | telefony tv | gps goclever | |||||||||