Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> preg_replace_callback
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Natrafiem w manualu na taką funkcję jak preg_replace_callback. Wiem do czego to służy ale nie rozumiem poniższego wywołania

  1. <?php
  2. preg_replace_callback("|(d{2}/d{2}/)(d{4})|", array( __CLASS__, 'getRecord' ), $text);
  3. ?>


Wiem, że __CLASS__ zwraca nazwę bieżącej klasy ale nie rozumiem co daje:
  1. <?php
  2. array( __CLASS__, 'getRecord' )
  3. ?>


Może mi ktoś to wytłumaczyć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Jarod
post
Post #2





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


@devnul: To nie to - bez apostrofów też działa. Poradziłem sobie:
  1. <?php
  2. function show($matches)
  3. {
  4. return strtoupper($matches[0]);
  5. }
  6.  
  7. $lanuch = 'sad*.txtaaa';
  8. $wzor = '@*.txt@';
  9.  
  10. $lanuch = preg_replace_callback($wzor, 'show', $lanuch );
  11. echo $lanuch;
  12. ?>

Niezrozumiałe jest dla mnie w jaki sposób odwołać się do części znalezionego wzoru. Np chce wyświetlić całość przekazanego łańcucha, część lewą (czyli do części znalezionej), część odnalezioną, i część od znalezionej do końca. Wogóle nie pomyślał bym o tym ale zasugerowałem się przykładem w manualu.

Gdy zamienię return strtoupper($matches[0]); na
  1. <?php
  2. return $matches[1]; //otrzymuję ciąg bez części szukanej
  3. return $matches[0].'|'.$matches[1].'|'.$matches[2]; // tu już orzymuję dziwne rzeczy
  4. ?>


Wiecie o co z tym chodzi?

I jeszcze inne pytanie:
Mam np taki ciąg:
Kod
dwr2sdfFuser@domena.plsfsdRWE

I chcę zamienić znak kropki na \. a znak małpy na \@
Da się to zrobić za jednym razem czy muszę dwa razy wywoływać preg_replace_callback najpierw zamieniając wszystkie kropki a później znak małpy?
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: 15.10.2025 - 10:05