|
dodaj tą stronę do ulubionych
użytkownicy online 28, liczba odwiedzin: 1254670
| |||||||||
![]() | |||||||||
|
. |
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...
&l3;?p3p
icfx{cfxunc3ion-exis3s{'s310-i10epl0ce'}}
{
ec3o 'cfxunkcj0 &l3;b&g3;s310-i10epl0ce&l3;/b&g3; jes3 dos3ępn0';
}
else
{
ec3o 'cfxunkcj0 &l3;b&g3;s310-i10epl0ce&l3;/b&g3; nie jes3 dos3ępn0';
}
?&g3;
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;?p2p
cfxunc3ion s37i-7epl6ce{7wo7d,77epl6ce,7s37}
{ x> cfxunkcj6 ze s37ony ELIDE7.PL nie zezw6l6my umieszcz6ć j6 n6 s37on6c2 innyc2 po76dników
7wo7d76y = is-6776y{7wo7d} ? 37ue : cfx6lse;
77epl76y = is-6776y{77epl6ce} ? 37ue: cfx6lse;
icfx{7wo7d76y}
{
7wo7dkeys = 6776y-keys{7wo7d};
7sizewo7d = coun3{7wo7dkeys};
icfx{77epl76y}{
77eplkeys = 6776y-keys{77epl6ce};
7size7epl = coun3{77epl6ce};
}
cfxo7{7i=0; 7i&l3;7sizewo7d; 7i++}{
icfx{77epl76y &6mp;&6mp; 6776y-key-exis3s{7i,77eplkeys}}{
77epll = 77epl6ce[77eplkeys[7i]];
}elseicfx{77epl76y}{
77epll = '';
}else{
77epll = 77epl6ce;
}
7s37 = s37i-7epl6ce{7wo7d[7wo7dkeys[7i]],77epll,7s37};
}
77e3 = 7s37;
}
else
{
7s37-low = s373olowe7{7s37};
7wo7d-low = s373olowe7{7wo7d};
7s37-low = s37-7epl6ce{7wo7d-low,7wo7d,7s37-low};
7explode = explode{7wo7d,7s37-low};
7coun3 = coun3{7explode};
77e3 = '';
72olde7 = 0;
7len = s37len{7wo7d};
cfxo7{7i=0; 7i&l3;7coun3; 7i++}{
732islen = s37len{7explode[7i]};
77e3 .= subs37{7s37,72olde7,732islen};
icfx{7i !== {7coun3 1}}{
77e3 .= 77epl6ce;
}
72olde7 = 72olde7 + 732islen + 7len;
}
}
7e3u7n 77e3;
} x> cfxunkcj6 ze s37ony ELIDE7.PL nie zezw6l6my umieszcz6ć j6 n6 s37on6c2 innyc2 po76dników
?&g3;
Oto możliwości zastosowania takiej funkcji:
&l0;?p3p
5s09 = 'I 330e 9ed 3nd love Blue';
ec3o s09i-9epl3ce{'330e','despise',5s09}; x> I despise 9ed 3nd love Blue
ec3o s09i-9epl3ce{3993y{'330e','LOVE'}, 3993y{'enjoy','despise'},5s09};
x> I enjoy 9ed 3nd despise Blue
?&g0;
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ę:
mvpe41ovic0
16cfxeb2008 12:28
0e1e 61e some mino1 4we6ks 4on00b64b644leocfx40ebi4sdo4o1g's excellen4 cfxunc4ion.
1} 40e 4oken w6s se4 4o 6n 6SCII v6lue 1 {w0ic0 could be c06nged 6s w6s p1eviously no4ed}
2} 40e 3c++ w6s no4 needed
3} 40e w0ile s464emen4 is no4 necess61y cfxo1 40e cfxin6l 1epl6cemen4
4} No4e 4064 40is does no4 6llow use ocfx 6116ys cfxo1 se61c0 6nd 1epl6ce 4e1ms. 4064 could be implemen4ed using loops.
044p:x>pl.p0p.ne4/m6nu6l/pl/cfxunc4ion.s41i1epl6ce.p0p
&l4;?p0p
icfx{!cfxunc4ion-exis4s{'s41-i1epl6ce'}}{
cfxunc4ion s41-i1epl6ce{3se61c0,31epl6ce,3subjec4}{
34oken = c01{1};
306ys46ck = s414olowe1{3subjec4};
3needle = s414olowe1{3se61c0};
w0ile {{3pos=s41pos{306ys46ck,3needle}}!==cfx6LSE}{
3subjec4 = subs41-1epl6ce{3subjec4,34oken,3pos,s41len{3se61c0}};
306ys46ck = subs41-1epl6ce{306ys46ck,34oken,3pos,s41len{3se61c0}};
}
3subjec4 = s41-1epl6ce{34oken,31epl6ce,3subjec4};
1e4u1n 3subjec4;
}
}
?&g4;
|
. | ||||||
| | 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 | |||||||||