Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcja w drugim argumencie preg_replace
Forum PHP.pl > Forum > Przedszkole
Waldek_05
Mam mały problem, którego rozwiązania znaleźć nie mogę. Otóż chcę, aby w funkcji preg_replace() wyszukany tekst zamieniał się na wielkie litery (przykładowo). Zrobiłem w tym celu wiele kombinacji, ta jest jakaś "ostatnia":
  1. <?php
  2.  
  3. echo preg_replace(&#092;"#([a-z])+#\",'strtoupper(\"1\")',\"134116adasdaaa134116\");
  4.  
  5. ?>

Jednakże to zwraca mi "134116\strtoupper("a")134116". Czy ktos mógłby mi pomóc rozwiązać ten problem?
hwao
Przykład 5. Using the 'e' modifier
  1. <?php
  2. preg_replace(&#092;"/(</?)(w+)([^>]*>)/e\",
  3.  &#092;"'1'.strtoupper('2').'3'\",
  4.  $html_body);
  5. ?>

This would capitalize all HTML tags in the input text.

Wiec

  1. <?php
  2. echo preg_replace(&#092;"#([a-z])+#\", \"' '.strtoupper('1').' '\",\"134116adasdaaa134116\");
  3. ?>
Waldek_05
Teraz zostaje zwórcony tylko "134116a134116".

Wcześniej też tylko pierwsza litera była wyświetlana, ale jeżeli nawet (chociaż przecież plusik jest w odpowiednim miejscu) to powinno to być "A" a nie "a"...
hwao
  1. <?php
  2.  
  3. $text = 'Jakis Ciag znakow i nie tylko 032432';
  4. echo strtoupper( $text ); 
  5.  
  6. ?>


a To nie dziala?
Waldek_05
Jasne że działa, to nie pozostawia żadnych wątpliwości. POwiedziałem w pierwszym poście, że tak funkcja to tylko tak dla przykładu...
hwao
  1. <?php
  2.  
  3. function cos( $arg ) {
  4.  // nie wiem cyz nie ma 2giego parametu jeszcze
  5.  print_r( $arg );
  6.  return jakasFunkaja( $arg );
  7. }
  8.  
  9. $wejscie = preg_replace_callback( '#([a-z]+)#si', 'cos', $wejscie ); 
  10.  
  11. echo $wejscie;
  12.  
  13. ?>


Moze tak ;-) (nie testowane to moze dzialac roznie polecam
Waldek_05
No hwao...
Właśnie napisałem ten temat, aby takie pierdółki małe nie przesyłać do nowych funkcji.
Może w tych kodach co przepisywałeś, podejrzewam bez sprawdzenia, jest jakiś błąd, którego na pierwszy rzut oka się nie dostrzega...

edycja
Problem rozwiązany.
W swoim pierwszym poście wspomniałeś o "modifierze e", ale po wyrażeniu "więc" go nie użyłeś. Teraz tak to przeanalizowałem i wszystko działa. Dziękuje winksmiley.jpg.
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.