Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Zmiana ciągu znaków na inny
mcichocki89
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.01.2012

Ostrzeżenie: (0%)
-----


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ł
Go to the top of the page
+Quote Post
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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

Ten post edytował Sephirus 27.01.2012, 08:47:04


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
mcichocki89
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.01.2012

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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

Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lombi
post
Post #5





Grupa: Zarejestrowani
Postów: 237
Pomógł: 11
Dołączył: 12.04.2006

Ostrzeżenie: (0%)
-----


  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

Ten post edytował Lombi 27.01.2012, 10:50:36


--------------------
znowu pomyliłem dwukropek ze średnikiem i starciłem pół dnia na szukanie błędu :)
Go to the top of the page
+Quote Post
mcichocki89
post
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.01.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 18:41