Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> preg_replace a tablice wielowymiarowe
Piotr Mederak
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 28.07.2003
Skąd: Brwinów koło Warszawy

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


Mam zmienna w ktorej trzymam kod HTML szablonu. W owym szablonie sa specjalne znaczniki {cos_tam}. Chce aby byly one podmieniane na to co jest w tablicy $LANG[szablony].

Napisalem cos takiego:
[php:1:c559ae53f7]$this->kod_HTML = preg_replace("/{(.*)}/", "{$LANG[szablony][$1]}" , $this->kod_HTML);[/php:1:c559ae53f7]

ale wyswietla mi blad:

Kod
Parse error: parse error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in D:wwwpublic_html_polskasystemengine.php on line 309


Moze ktos wie, gdzie robie blad?


--------------------
www.humor-na-gg.w.pl
Go to the top of the page
+Quote Post
Jabol
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


zmienna nie może się nazywać $1
Go to the top of the page
+Quote Post
Piotr Mederak
post
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 28.07.2003
Skąd: Brwinów koło Warszawy

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


Cytat
zmienna nie może się nazywać $1


Moze. Zmienna $1 zawiera to co zostalo znalezione w (.*). To sa akurat podstawy wyrazen regularnych.

[php:1:fb66924a98]$this->kod_HTML = preg_replace("/{(.*)}/" , "$1", $this->kod_HTML);[/php:1:fb66924a98]

zwraca dokladnie to co powinien, ale za nic nie moge umiescic wyniku wyszukiwania jako nazwy komorki w tabeli sad.gif

Moze na przykladzie:
W kodzie jest {Help}

a ja mam zmienna $LANG[szablony][Help] = 'Pomoc';

i chce by mi wlasnie to wstawilo...

Moze wogole zle sie za to zabieram??


--------------------
www.humor-na-gg.w.pl
Go to the top of the page
+Quote Post
FiDO
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Sprobuj tak:
[php:1:12cde715e1]$this->kod_HTML = preg_replace("/{(.*)}/e", "'{'.$LANG[szablony]['$1'].'}'" , $this->kod_HTML);[/php:1:12cde715e1]
Go to the top of the page
+Quote Post
borec
post
Post #5





Grupa: Zarejestrowani
Postów: 260
Pomógł: 0
Dołączył: 18.07.2003
Skąd: Tarnów

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


Cytat
Nazw zmiennych dotyczą te same reguły, co innych rodzajów nazw w php. Poprawna nazwa zmiennej zaczyna się od litery lub znaku podkreślenia "_", po których może wystąpić dowolna ilość liter, cyfr lub znaków podkreślenia.


Cytat
$4site = 'not yet';     // niepoprawna nazwa - zaczyna się od cyfry


--------------------
Gentoo Linux 64bit / PHP 5.2 / MySQL 5.1
-> Administracja serwerami Linux i FreeBSD
Go to the top of the page
+Quote Post
Piotr Mederak
post
Post #6





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 28.07.2003
Skąd: Brwinów koło Warszawy

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


Jak juz sie przerzucamy cytatami z manuala:

Cytat
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])

Searches subject for matches to pattern and replaces them with replacement . If limit is specified, then only limit matches will be replaced; if limit is omitted or is -1, then all matches are replaced.  

Replacement may contain references of the form n or (since php 4.0.4) $n, with the latter form being the preferred one.


borec -> o wyjatkach od reguly chyba slyszales?? smile.gif


--------------------
www.humor-na-gg.w.pl
Go to the top of the page
+Quote Post
uboottd
post
Post #7





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

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


Guzik a nie wyjatek. Co innego zmienna phpowa, a co innego referencja w wyrazeniach. To $1 nie jest zmienne phpowa i jak parser trafi na to w trybie w ktorym interpretuje $ jako poczatek nazwy zmiennej to posle Cie na drzewo. Musisz przekazac _ciag znakow_ $1 do parametru funkcji preg_replace i dopiero ta funkcja zinterpretuje to jako referencje w wyrazeniu.
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 - 04:16