Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] REGEX + podmiana wartością z tablicy po ID
-lukasamd-
post
Post #1





Goście







Witam,
wiem, nazwa pewnie niezbyt wiele Wam mówi, więc już tłumaczę o co chodzi.

Mam tablicę $array_chars wyglądającą tak:

  1. $array_chars = array(
  2. '1' => 'jablko',
  3. '2' => 'pomarancz',
  4. '4' => 'gruszka',
  5. '6' => 'sliwka',
  6. '8' => 'kiwi');


Mam tekst, w którym za pomocą regexa chciałbym znaleźć coś takiego:

owoc-X-opis
gdzie X to wartość liczbowa, zaś opis to tekst

a następnie zamienić w nim słowo owoc na wartość $array_chars[X].

Jak to zrobić... łatwo i sensownie? Próbowałem i mam kod który działa, ale na 100% od nowa wynajduję koło, ponieważ najpierw wyszukuję i zapisuję, a dopiero później podmieniam, a wydaje mi się, że da się zrobić te operacje za jednym zamachem.

Ten post edytował lukasamd 28.11.2009, 17:09:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
tvister
post
Post #2





Grupa: Zarejestrowani
Postów: 253
Pomógł: 29
Dołączył: 18.08.2008

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


preg_replace

w manualu przykład nr 2

Ten post edytował tvister 28.11.2009, 17:26:21


--------------------
Kto rano wstaje ten leje jak z cebra.
Go to the top of the page
+Quote Post
-lukasamd-
post
Post #3





Goście







No nie bardzo, ja nie chcę zamieniać wartości z jednej tablicy na wartości drugiej,
lecz wzorzec na wartość z tablicy o id zawartej w tym wzorcu.

Nie działający przykład pokazujący o co chodzi:

  1. $array_chars = array(
  2. '1' => 'jablko',
  3. '2' => 'pomarancz',
  4. '4' => 'gruszka',
  5. '6' => 'sliwka',
  6. '8' => 'kiwi');
  7.  
  8.  
  9. $ciag = 'To jest testowy tekst owoc-1-a takze owoc-2 moze byc i dzis owoc-8';
  10.  
  11. $wzorzec = '/owoc-\d+/';
  12.  
  13. echo preg_replace($wzorzec, $array_chars, $ciag);


W efekcie chcę otrzymać:

To jest testowy tekst jablko-a takze pomarancz moze byc i dzis kiwi




EDIT:


Sprawdziłem manual no i zrobiłem coś takiego:


  1. $wzorzec = '/owoc-(\d+)/';
  2.  
  3. function podmien_tekst($matches)
  4. {
  5. global $array_chars;
  6. return $array_chars[$matches[1]];
  7. }
  8.  
  9. echo preg_replace_callback($wzorzec, 'podmien_tekst',$ciag);


No i działa biggrin.gif
Już chyba bardziej uprościć się tego nie da, po to jest ten callback raczej.

Ten post edytował lukasamd 28.11.2009, 18:23:07
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 01:15