Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Puste zmienne
Forum PHP.pl > Forum > PHP
MadMark
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 ?
CuteOne
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
MadMark
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.
CuteOne
$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 ;]
MadMark
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.
CuteOne
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);
MadMark
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...
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.