Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ preg_replace ] Wykorzystanie \\1 jako indeksu tablicy.
Forum PHP.pl > Forum > PHP
DhuCerbin
Witam

Posiadam następujący kod :

[php:1:0078928fba]<?php
$arr =& $this -> blocks;
$this -> output = preg_replace('#{(.+?)}#is', "$arr[1]", $this -> output);

?>[/php:1:0078928fba]

gdzie output to treśc pliku :

Kod
<b>{TITLE}</b>



<br />


a var_dump zmiennej $arr wyglada następujaco :

Kod
array(1) { ["TITLE"]=> string(3) "bep" }

Ma to byc zwykły system szablonow, chce by preg_replace zamieniało każdy blok ' {cos_tam} ' [ gdzie 'cos_tam' jest zmienne ] nawartosc tablicy $this -> blocks o indexie cos_tam.

Niestety, zamiast spodziewanego 'bep' otrzymuje
Kod
$arr[TITLE]


Co oczywiscie mnie nie satysfakcjonuje.

Przeszukałem manual i zastosowałem taką konstrukcje jak wyzej.
Na forum spotkałem sie z konstrukcja :

[php:1:0078928fba]<?php
preg_replace('#{(.+?)}#is', $arr[1], $this -> output);
?>[/php:1:0078928fba]
Ad. przed '1' w '[' i ']' są dwa backslashe, które forum ucina.

która zwraca :

Kod
Warning: Unexpected character in input: '' (ASCII=92) state=1 in c:usrkrasnalwwwxsecond.php on line 31



Warning: Unexpected character in input: '' (ASCII=92) state=1 in c:usrkrasnalwwwxsecond.php on line 31


Gdzie linia 31 jest linia tego wyrażenia regularnego.

W sieci spotkałem róż metodę :

[php:1:0078928fba]<?php
preg_replace('#{(.+?)}#is', $arr["1"], $this -> output);
?>[/php:1:0078928fba]

która nie zwraca nic.

Również tworzyłem bez stosowania referencji
[php:1:0078928fba]<?php
$arr =& $this -> blocks;
?>[/php:1:0078928fba]

I efekty były identyczne.

Nie wiem czy ma coś z tym wspólnego, ale napisze :

serwer Krasnal
php 4.3.4
Windows 98

Prosze o pomoc w rozwiazaniu problemu.

DhuCerbin
BzikOS
[php:1:316e732d1f]<?php
$this -> output = preg_replace('#{(.+?)}#ise', '$arr["1"]', $this -> output);
?>[/php:1:316e732d1f]

O to chodzi?
DhuCerbin
zwraca

Kod
$arr["TITLE"]


powinno dokłądnie to, ale sparsowane raz jeszcze przez php.

wpadłem więc pomysł na :

[php:1:a9dca35df5]<?php
preg_replace('#{(.+?)}#is', eval('$arr["1"];'), $this -> output);
?>[/php:1:a9dca35df5]

jednak również nic nie zwraca :/

[/code]
BzikOS
Przeczytaj dokładnie linijkę, którą Ci podałem winksmiley.jpg
DhuCerbin
Sory, mój bład, ale nadal nic nie zwraca sad.gif

Podanie całego kodu pomoże jakoś w rozwiazaniu problemu ? Nie chce topica zaśmiecać.

____

zamiana kolejnosci 'i' 's' i 'e' cudownie zadziałała biggrin.gif
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.