Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: preg_replace a tablice wielowymiarowe
Forum PHP.pl > Forum > PHP
Piotr Mederak
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?
Jabol
zmienna nie może się nazywać $1
Piotr Mederak
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??
FiDO
Sprobuj tak:
[php:1:12cde715e1]$this->kod_HTML = preg_replace("/{(.*)}/e", "'{'.$LANG[szablony]['$1'].'}'" , $this->kod_HTML);[/php:1:12cde715e1]
borec
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
Piotr Mederak
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
uboottd
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.
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.