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 />
<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
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