Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Podmiana znaków w tekście - preg_replace + array
miki3475
post
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 1
Dołączył: 15.06.2008

Ostrzeżenie: (10%)
X----


Witam, pracuję nad prostym skryptem, który pozwoli mi zakodować tekst używając mojego własnego kryptogramu.

Polegało będzie to na tym że skrypt ma za zadanie pozmieniać litery na swoje odpowiedniki (jakie mu wskaże) oraz obrócić tekst przy pomocy funkcji strrev (co akurat skomplikowane nie jest).


Przygotowałem następujący skrypt:


  1. <?php
  2. $string = 'Wawa';
  3. $patterns = array();
  4. $patterns[0] = '/W/';
  5. $patterns[1] = '/a/';
  6. $patterns[2] = '/w/';
  7. $replacements = array();
  8. $replacements[2] = 'a';
  9. $replacements[1] = 'G';
  10. $replacements[0] = '2';
  11. echo preg_replace($patterns, $replacements, $string);
  12. ?>


Prawidłową odpowiedzią na "Wawa" powinno być "aG2G", a otrzymuję "GG2G".

Jak widać problem dotyczy tego że po zamienieniu, stara się zamienić jeszcze raz, czyli:

W -> a -> G
A powinno być tylko:
W -> a

Próbowałem wprowadzić $limit = 1, jednak to się nie sprawdza do końca ponieważ wtedy otrzymujemy "Ga2a", czyli a nie jest już zamieniane bo zostało już raz zamienione.

Niektórzy powiedzą że nie możesz wprowadzić liter których tutaj nie ma?
Nie, bo chce zrobić tak z całym alfabetem, czyli nie da się tego tak ustawić aby się nie powtarzało (IMG:style_emoticons/default/winksmiley.jpg)

Z góry dziękuję za pomoc

Ten post edytował miki3475 27.07.2010, 17:10:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
t4keda
post
Post #2





Grupa: Zarejestrowani
Postów: 57
Pomógł: 10
Dołączył: 14.10.2009

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


Może iteracja przez string ci się przyda?
Podobny temat: http://forum.php.pl/index.php?showtopic=81176
Go to the top of the page
+Quote Post
miki3475
post
Post #3





Grupa: Zarejestrowani
Postów: 58
Pomógł: 1
Dołączył: 15.06.2008

Ostrzeżenie: (10%)
X----


Cytat(t4keda @ 27.07.2010, 18:28:10 ) *
Może iteracja przez string ci się przyda?
Podobny temat: http://forum.php.pl/index.php?showtopic=81176


Z tego co widze to chodzi o to że się czynność powtarza, a ja tak jak piszę tego nie chce, chce żeby literka raz się zamieniła i koniec.
Ale dzięki za chęci (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
t4keda
post
Post #4





Grupa: Zarejestrowani
Postów: 57
Pomógł: 10
Dołączył: 14.10.2009

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


Cytat(miki3475 @ 27.07.2010, 18:36:13 ) *
Z tego co widze to chodzi o to że się czynność powtarza, a ja tak jak piszę tego nie chce, chce żeby literka raz się zamieniła i koniec.
Ale dzięki za chęci (IMG:style_emoticons/default/winksmiley.jpg)


No tak czynność (podmiana czy co tam chcesz) się powtarza, ale dla każdej jednej litery z ciągu tylko raz. Dla tego przykładu:
  1. <?php
  2. header ('Content-Type:text/html; charset=utf-8');
  3.  
  4. $str = 'zażółć gęślą jaźń';
  5. print '$str: '.$str.'<br />';
  6. for($i = 0; $i < iconv_strlen($str, 'UTF-8'); $i++){
  7. print ' <br />'.iconv_substr($str, $i, 1, 'UTF-8').'<br />';
  8. }
  9. print '<br />$str: '.$str.'<br />';
  10. ?>


Każda litera powinna być w oddzielnej linii (albo nawet w co drugiej).
http://ideone.com/BwG8H
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 6.10.2025 - 12:40