Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zmiana ciągu znaków na inny
Forum PHP.pl > Forum > Przedszkole
mcichocki89
Witam,
Mam takie małe zadanie i nie potrafię sobie z nim poradzić. Mam ciąg znaków: 0fc321c54bc7cec96acbacd7ecf0d18dd3c8d544d7 i muszę przykładowo znaki c3, c5, c9, cb, cf, d5 zamienić na litery, z tym jednak zastrzeżeniem, że po przesłaniu ciągu znaków przez formularz i przetworzeniu przez skrypt widoczne mogą zostać tylko i wyłącznie przetworzone znaki zamienione na pojedyncze litery - cała reszta ma zostać pominięta. Czy ktoś mi podpowie jakiej funkcji mam do tego użyć?
Pozdrawiam,
Michał
Sephirus
Witam,

przede wszystkim utwórz sobie tablicę z literami:

  1. $litery = array(
  2. 'c3' => 'a',
  3. 'c5' => 'b',
  4. 'c9' => 'c',
  5. 'cb' => 'd',
  6. // itd...
  7. );


Teraz należy podzielić tekst na cząstki 2 znakowe:

  1.  
  2. $tekst = '0fc321c54bc7cec96acbacd7ecf0d18dd3c8d544d7';
  3.  
  4. $tekst = preg_split('/[0-9a-z]{2}/',$tekst);
  5.  


Następnie wyświetlać litery jeśli się pojawią:

  1. $tekstWyjsciowy = '';
  2.  
  3. foreach($tekst AS $czastka)
  4. {
  5. if(isset($litery[$czastka]))
  6. {
  7. $tekstWyjsciowy.= $litery[$czastka];
  8. }
  9. }
  10.  
  11. echo $tekstWyjsciowy;


Czyli cały skrypt:

  1. $tekst = '0fc321c54bc7cec96acbacd7ecf0d18dd3c8d544d7';
  2. $tekst = preg_split('/[0-9a-z]{2}/',$tekst);
  3.  
  4. $litery = array(
  5. 'c3' => 'a',
  6. 'c5' => 'b',
  7. 'c9' => 'c',
  8. 'cb' => 'd',
  9. // itd...
  10. );
  11.  
  12. $tekstWyjsciowy = '';
  13.  
  14. foreach($tekst AS $czastka)
  15. {
  16. if(isset($litery[$czastka]))
  17. {
  18. $tekstWyjsciowy.= $litery[$czastka];
  19. }
  20. }
  21.  
  22. echo $tekstWyjsciowy;


O ile dobrze Cię zrozumiałem wink.gif
mcichocki89
Dziękuje za zainteresowanie. Podejrzewam, że o coś takiego właśnie mi chodzi, z tym że mam problem ze skryptem. Mianowicie nie działa smile.gif. Nie wiem, co może być nie tak, próbowałem na różne sposoby zmieniać poszczególne wartości i nic. Próbowałeś uruchomić skrypt? I jeszcze jedno pytanie, za co odpowiada $czastka?
nospor
Cytat
I jeszcze jedno pytanie, za co odpowiada $czastka?
Zajrzyj do manuala i sobie doczytaj jak działa FOREACH to będziesz wiedział co to $czastka

Lombi
  1. $str='0fc321c54bc7cec96acbacd7ecf0d18dd3c8d544d7';
  2. $str=str_split($str,2); // dzielimy string na ciagi 2 znakowe
  3. $out='';
  4. $arr=array('c3'=>'a','c4'=>'b','c9'=>'c','cb'=>'d','cf'=>'e','d5'=>'f'); // co na co ma byc zmienione
  5. foreach($str as $v) // pentelka aby przeleciec tablice z ciagami 2 znakowymi
  6. {
  7. if(isset($arr[$v])) // czy taki klucz istnieje w tablicy
  8. {
  9. $out.=$v; // jesli tak to przypisz do nowego ciagu ta wartosc
  10. }
  11. }
  12. echo strtr($out, $arr); // zmiena z nazwy klucza na wartosc tego klucza w tablicy $arr


Chyba o to chodzi smile.gif
mcichocki89
Zajrzałem. Pętla analizuje wartość $tekst i przetwarzany element ma zostać zapisany w zmiennej $czastka. Mam odpowiedź na pytanie, dziękuje. Co jednak jest nie tak ze skryptem, bądź co Ja robię nie tak z nim? smile.gif

Działa. Dziękuje Wam bardzo za pomoc smile.gif.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.