Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Preg_replace z tablica wielowymiarowa
mirk
post 9.02.2011, 12:40:21
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 9.02.2011

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


Mam funkcję która filtruje tekst wyszukuje i podstawia do zmiennych i tablic ich wartości:

  1. function szablon($text,$zmienne,$tablice){
  2. //funkcja filtrująca tekst zmienia postac zmiennej w tekscie [%zmienna%] na $zmienne['zmienna'];
  3. //$zmienne - tablica przechowujaca zmienne;
  4. //$tablice - tablica wielowymiarowa;
  5. //$text - text zamierajacy zmienne w postaci [%zmienna%]
  6. $text=preg_replace('/\[%(.*?)\%]/e', '$zmienne[\'${1}\']', $text);
  7. $text=preg_replace('/\{%(.*?)\%}/e', '$tablice[\'${1}\']', $text);
  8. return $text;
  9. }
  10.  
  11. $zmienne[zmienna1]='1';
  12. $zmienne[zmienna2]='2';
  13. $tablice[tablica1][1]='1111';
  14. $tablice[tablica1][2]='2222';
  15. $tekst="cos tam [%zmienna1%] oraz tablica {%tablica1%} dalej [%zmienna2%]";
  16.  
  17. //wywoluje funkcje:
  18. szablon($tekst,$zmienne,$tablice);


i dostaje: cos tam 1 oraz tablica array dalej 2;

Pytanie brzmi co należy zrobić aby wyświetlić zawartość całej tablicy $tablice w filtrowanym tekście w miejscu w którym pojawia się tablica?

aby otrzymac cos takiego: cos tam 1 oraz tablica 1111 2222 dalej 2 ;

Niby proste ale nie mogę sobie z tym poradzić, wiem że należy użyć w funkcji np:
  1. foreach ($tablice as $v1) {
  2. foreach ($v1 as $v2) {
  3. echo "$v2\n";
  4. }
  5. }

ale nie mogę połączyć foreach z preg_replace.
Go to the top of the page
+Quote Post
Noidea
post 9.02.2011, 13:53:21
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


  1. 'implode( " ", $tablice[\'${1}\'] )'


--------------------
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 Wersja Lo-Fi Aktualny czas: 6.07.2025 - 18:01