Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Puste zmienne
MadMark
post
Post #1





Grupa: Zarejestrowani
Postów: 105
Pomógł: 3
Dołączył: 12.07.2010

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


Witam,


mam problem ponieważ napisałem kod:

  1. $t_index = loc_h("themes/".STYLE."/pages/MainPage_body");
  2. $t_lines = file($t_index);
  3. $p_index['MODULE'] = get_module_theme($mod);
  4. foreach($t_lines AS $t_line)
  5. {
  6. $t_effect = preg_replace("#{([A-Z0-9\-]+)}#",$p_index['\\1'],$t_line);
  7. $t_printable .= $t_effect;
  8. }
  9. print $t_printable;


i działa on "mniej/więcej" poprawnie, gdyż zmienne z pliku html umieszczone w {ZMIENNA} są przepisywane na interesujące mnie $p_index['ZMIENNA'], ale jednak pozostają puste, mimo iż posiadają przypisaną wcześniej wartość (funkcja get_module_theme($mod) zawsze coś zwraca <w postaci kodu html+tekstu w nim>)
I tak dla $p_index['MODULE'] powinna się wyświetlać przypisana treść (w tym przypadku będą to newsy, które się wyświetlają po wykonaniu print/echo przed foreach...


Podpowie ktoś gdzie robię błąd ? ewentualnie jak to inaczej zrobić, żeby działało ?

Ten post edytował MadMark 26.11.2010, 22:17:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


prosty test co zwracają zmienne
  1. foreach($t_lines AS $t_line)
  2. {
  3. echo $t_line.'<br>';
  4. $t_effect = preg_replace("#{([A-Z0-9\-]+)}#",$p_index['\\1'],$t_line); //zazwyczaj błędy powstają przy regexach
  5. echo'<br><br>';
  6. echo 'Var_dump: '.var_dump($t_effect).'<br>';
  7. $t_printable .= $t_effect;
  8. }


eee a co to za cudo $p_index['\\1'] questionmark.gif

Ten post edytował CuteOne 26.11.2010, 22:28:57
Go to the top of the page
+Quote Post
MadMark
post
Post #3





Grupa: Zarejestrowani
Postów: 105
Pomógł: 3
Dołączył: 12.07.2010

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


Cytat(CuteOne @ 26.11.2010, 22:26:42 ) *
prosty test co zwracają zmienne
  1. foreach($t_lines AS $t_line)
  2. {
  3. echo $t_line.'<br>';
  4. $t_effect = preg_replace("#{([A-Z0-9\-]+)}#",$p_index['\\1'],$t_line); //zazwyczaj błędy powstają przy regexach
  5. echo'<br><br>';
  6. echo 'Var_dump: '.var_dump($t_effect).'<br>';
  7. $t_printable .= $t_effect;
  8. }


eee a co to za cudo $p_index['\\1'] questionmark.gif


To tak, po wstawieniu tej funkcji wyświetla się pełno tekstu typu
  1. " Var_dump:
  2. string(81) "
i nie wiem ocb to raz, a dwa to "cudo" to przecież zamiana w preg_replace (pierwszy zamieniany element) - \\1

I nie wiem co robić...


///edit:

Jeśli wstawię var_dump($p_index['\\1']) to zwraca mi jedynkę ;/ i nie wiem ocb.

Ten post edytował MadMark 26.11.2010, 23:34:58
Go to the top of the page
+Quote Post
CuteOne
post
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


$t_effect = preg_replace("#{([A-Z0-9\-]+)}#",$p_index['MODELS'],$t_line); //zazwyczaj błędy powstają przy regexach
echo 'Var_dump: '.var_dump($t_effect).'<br>';

ps. do preg_replace wysylasz wartość z tablicy, więc po cholere kombinacje ;]

Ten post edytował CuteOne 27.11.2010, 01:34:36
Go to the top of the page
+Quote Post
MadMark
post
Post #5





Grupa: Zarejestrowani
Postów: 105
Pomógł: 3
Dołączył: 12.07.2010

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


Cytat(CuteOne @ 27.11.2010, 01:27:51 ) *
$t_effect = preg_replace("#{([A-Z0-9\-]+)}#",$p_index['MODELS'],$t_line); //zazwyczaj błędy powstają przy regexach
echo 'Var_dump: '.var_dump($t_effect).'<br>';


Nie jest moim celem podstawianie jednej zmiennej $p_index a wielu np.:
$p_index['TOP'],$p_index['MODULES'],$p_index['COSTAM'] itd ird, kazda zmienna musi odpowiadac tej w znaczkach {} w html...
A ty mi proponujesz tylko dla jednej zmiennej.
Go to the top of the page
+Quote Post
CuteOne
post
Post #6





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


lol to mów od razu o co chodzi...
  1. <?php
  2. function replace_named($string,$args) {
  3. foreach($args as $k=>$v) {
  4. $string = preg_replace("/\(\?P\<$k\>(.*)\)/",$v,$string);
  5. }
  6. return $string;
  7. }
  8.  
  9. $string = 'articles/(?P<year>\d{4})';
  10. $args = array('year'=>2010);
  11. echo replace_named($string,$args);
  12. ?>

z manuala

lub

$t_effect = preg_replace("#{([A-Z0-9\-]+)}#","$p_index[\"$1\"]",$t_line);

Ten post edytował CuteOne 27.11.2010, 01:40:08
Go to the top of the page
+Quote Post
MadMark
post
Post #7





Grupa: Zarejestrowani
Postów: 105
Pomógł: 3
Dołączył: 12.07.2010

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


Cytat(CuteOne @ 27.11.2010, 01:37:07 ) *
lol to mów od razu o co chodzi...

No toż tłumaczę od początku...
Cytat(CuteOne @ 27.11.2010, 01:37:07 ) *
$t_effect = preg_replace("#{([A-Z0-9\-]+)}#","$p_index[\"$1\"]",$t_line);

Pomagasz na siłę nie czytając ze zrozumieniem czego ja chcę i gdzie mam problem...
Ale to jest dokładnie to samo co aktualnie mam u siebie, bo $1 == \\1 w tym przypadku preg_replace... (a wstawienie dolarówki w "" nie pomoże, bo wyedy wyświetlonym tekstem będzie $p_index['COSTAM'])


Mój problem jest taki, że zmienne są zamieniane jak już pisałem w pierwszym poście, ale są PUSTE - chociaż mają przypisane wartości przed foreach...

I to jest problem...

Ten post edytował MadMark 27.11.2010, 02:02:28
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: 20.08.2025 - 12:35