Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> preg_replace, zamiana z uzyciem wyrazen regularnych
dtb
post
Post #1





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


Mam kod:
  1. <?php
  2. $zmienna = preg_replace ('/([0-9]+)/', '$1', $zmienna); // dziala
  3. ?>

Jak widać kod zamiena w zmiennej '$zmienna' wszystkie cyfry na te same cyfry. Jednak chciałbym przepuścić te cyfry przez funkcje:
  1. <?php
  2. $zmienna = preg_replace ('/([0-9]+)/', funkcja('$1'), $zmienna); // blad
  3. $zmienna = preg_replace ('/([0-9]+)/', funkcja($1), $zmienna); // blad
  4. ?>

No właśnie. Błąd! Jak więc to zrobić?

Ten post edytował dtb 5.11.2005, 11:32:09
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
L_Devil
post
Post #2





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

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


Niestety tak się nie da zrobić jak ty myślisz - do funkcji jako parametr wysyłasz po prostu zmienną $l, ewentualnie string "$l" - a nie to co produkuje wyrażenie regularne. Jeżeli już koniecznie chcesz żeby te liczby przeszły przez funkcję, musisz użyć eval" title="Zobacz w manualu php" target="_manual:

(w komentarzach podałem wartości zmiennej $ciag)

  1. <?php
  2.  
  3. function funkcja($int)
  4. {
  5.  return $int*$int;
  6. }
  7.  
  8. $ciag = "to prawda że 23 jest większe od 15?";
  9. /*
  10. to prawda że 23 jest większe od 15?
  11. */
  12.  
  13. $ciag = '"' . $ciag . '";';
  14. /*
  15. "to prawda że 23 jest większe od 15?";
  16. */
  17.  
  18. $ciag = preg_replace ('/([0-9]+)/', '" . funkcja($1); . "', $zmienna);
  19. /*
  20. "to prawda że" . funkcja(23) . "jest większe od " . funkcja(15) . "?";
  21. */
  22.  
  23. $ciag = '$ciag = ' . $ciag;
  24. /*
  25. $ciag = "to prawda że" . funkcja(23) . "jest większe od " . funkcja(15) . "?";
  26. */
  27.  
  28. eval($ciag);
  29. /*
  30. to prawda że 529 jest większe od 225?
  31. */
  32.  
  33. ?>
Czyli o to nam chodziło (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował L_Devil 5.11.2005, 12:14:13
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: 3.10.2025 - 05:13