![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 426 Pomógł: 1 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Zaczełem pisac swoją nową klase pagera i natrafiłem na problem. Przy wyświetlaniu danych. Wygląd(template) danej rzeczy na stronie wczytuje z pliku przez file_get_contents. Przykładowy szablon wygląda tak:
No i jak widać dane między {} zostaną zamienione na odpowiednie dane podane w skrypcie. Odpowiada za to metoda parse:
No i $this->blocks jest tablica zawierająca elementy do podmiany. np:
Skryptu używam tak:
No i chodzi o to że preg_replace źle działa bo wygląd po parsowaniu wygląda tak:
A powinien tak:
Więc zastają znaczniki {} które powinny zostac zamienione (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Ten post edytował Apo 21.02.2006, 15:04:32 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 2 605 Pomógł: 96 Dołączył: 22.10.2004 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
Zapomniałeś o slashu, { i } są traktowane jako znaki specjalne. Spróbuj tak:
Tak myślę, ( bo wyrażeń reg. nie lubię ). Pozdrawiam! ps. powinno być rzeczy! |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 426 Pomógł: 1 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
niestety strife wcześniej też tak zrobiłem i to nic nie daje ;/ może trzeba dać jakąś flage ale ja sie na tym nie znam
Ten post edytował Apo 19.02.2006, 19:25:52 |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 2 605 Pomógł: 96 Dołączył: 22.10.2004 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
Tak więc już wiem napewno, że preg_replace jest dobrze napisane, błąd musi być gdzieś indziej, ponieważ coś takiego:
działa. Jak coś wymyślę to zedytuje. Trzeba będzie się wczytać w Twój kod ;p Hmm... nowe elementy do tablicy powinieneś chyba dodawać w ten sposób:
a nie tak jak pisałeś
Ponieważ cały czas zmieniasz tablicę na kolejną inną a nie dodajesz. ? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 11.06.2005 Skąd: Gostyń Ostrzeżenie: (0%) ![]() ![]() |
Kod $this->parsed .= preg_replace('#{'.$what.'}#', $on, $this->template); Hmm.. a czemu tu jest operator dopisania (.=)? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 426 Pomógł: 1 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Sorry że tak późno odpisuje ale nie miałem dostępu do komputera, problem jest nadal aktualny.
Cytat Hmm... nowe elementy do tablicy powinieneś chyba dodawać w ten sposób: <?php $pager->blocks[] = array('co podminic' => 'na co'); ?> Właśnie jak chce tak robic to mi wywala errory. @Termit_ jak nie daje operatora przypisanie to jest taki efekt:
No i nie podmienia tego {tytul} bo go nie dopisze do zmiennej. |
|
|
![]()
Post
#7
|
|
Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
@Abo: zwróć jeszcze raz na ostatnią uwagę strife'a - tam leży błąd.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 426 Pomógł: 1 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
@Jabol wlasnie jak dodaje $pager->blocks[] = ... to mi wyskakuje błąd:
Warning: preg_replace() [function.preg-replace]: Parameter mismatch, pattern is a string while replacement in an array. in g:\usr\apache\httpd\html\\class\pager.php on line 45 Wkleje kod tej klasy co zaczełem pisać, może gdzie indziej leży problem ;/ plik pager.php
plik test.php
no i plik template text.tpl:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 16:57 |