Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kolejne zamienianie
Forum PHP.pl > Forum > PHP
Ociu
Mam string typu
Kod
Ma?a  ?a k?t?
i tablicę:
  1. <?php
  2. $vars = array(
  3. 1 => 'm',
  4. 2 => 'm',
  5. 3 => 'o',
  6. 4 => 'a'
  7. );
  8. ?>


Chciałbym aby przelecieć to jakimś wyrażeniem( którego nie wiem jak zbudować ) aby będzie zamieniał po kolejne ? na literki z tablicy. Of course nr. pytajnika = numerkowi literki.

Ma ktoś jakieś pomysły jak to zrobić ?

z góry dziękuje.

pozdrawiam.
jaco
  1. <?php
  2.  
  3. $vars = array(
  4. 1 => 'm',
  5. 2 => 'm',
  6. 3 => 'o',
  7. 4 => 'a'
  8. );
  9.  
  10. $x = 0; 
  11. echo preg_replace('/\?/e', '$vars[++$x];', 'Ma?a  ?a k?t?');
  12.  
  13. ?>


Warto zauwazyc, ze nie da sie napisac pytajnika winksmiley.jpg Moze cos takiego...

  1. <?php
  2. echo preg_replace('/([^\\\])\?/e', ''\\1'.$vars[++$x];', 'Ma?a \? ?a k?t?');
  3. ?>


Teraz mozna zwyklym replace zamienic \? na ? lub zupelnie ekstermalnie:

  1. <?php
  2. echo preg_replace('/(.)\?/e', '(ereg('[^\\\\]''\\1') ? '\\1'.$vars[++$x] : '?');', 'Ma?a \? ?a k?t?');
  3.  
  4. ?>


Mozliwe, ze to nie najprostrze rozwiazanie winksmiley.jpg
Radarek
Cytat(jaco @ 2006-01-24 08:49:10)
  1. <?php
  2.  
  3. $vars = array(
  4. 1 => 'm',
  5. 2 => 'm',
  6. 3 => 'o',
  7. 4 => 'a'
  8. );
  9.  
  10. $x = 0; 
  11. echo preg_replace('/\?/e', '$vars[++$x];', 'Ma?a ?a k?t?');
  12.  
  13. ?>


Warto zauwazyc, ze nie da sie napisac pytajnika winksmiley.jpg Moze cos takiego...

No przeciez to dziala :-). Nie wiem o co ci chodzi, ze nie mozna napisac pytajnika?smile.gif

Ten kod wypisuje: "Mama ma kota". Chyba o to chodzi prawda?smile.gif
crash
Chodzi o to, żeby nie wpaść w błoto tongue.gif Żartuję... Spróbuj potraktować tym tekst, w którym ma być normalny znak zapytania, wszystko się wtedy "rozjedzie".
Radarek
Cytat(jaco @ 2006-01-24 08:49:10)
Mozliwe, ze to nie najprostrze rozwiazanie winksmiley.jpg

Hehe, no nienajprostsze smile.gif.

  1. <?php
  2. $vars = array(
  3. 1 => 'm',
  4. 2 => 'm',
  5. 3 => 'o',
  6. 4 => 'a'
  7. );
  8.  
  9. $x = 0;
  10.  
  11. $regex = "/(?<!\\\\)\\?/e";
  12. echo preg_replace($regex, '$vars[++$x];', 'Ma?a \? ?a k?t?\?');
  13.  
  14. ?>


Teraz trzeba pozamieniac wszystkie wystapienia \? na ?.

Z automatyczna zamiana:

  1. <?php
  2. $x = 0;
  3. $tekst = 'Ma?a \? ?a k?t?\?';
  4. $regex = "/(\\\\)?\\?/e";
  5. echo preg_replace($regex, ''\\0'=='\\?''?' : $vars[++$x]', $tekst);
  6. ?>


Twoje rozwiazanie nie dzialalo jesli pierwszym znakiem byl ? (nie byl podmieniany).
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.