Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zamiana własnego tagu na zmienną
Forum PHP.pl > Forum > PHP
Mappet
  1. <?
  2. #########################
  3. # wzor {top=adresat}  #
  4. #########################
  5. $top['adresat'] = '3';
  6. $fp = file_get_contents('../szablony/'.$_POST['plik'].'.inc');
  7. $fp = preg_replace(&#092;"/s*{(w+)=(w+)}s*/\",\"<?=$1['2'];?>\",$fp);
  8. echo $fp;
  9. ?>

Nie wiem co robię źle wzór jest podany wyżej. Wg. tego co napisałem chciałem wyświetlić liczbę 3. Z zamiany {top=adresat} powienien powstać $top['adresat'] a pod zmienną $top['adresat'] kryje się liczba 3
rzseattle
Proponuje ci nastepujace rozwiazanie.

1. Sprawdzasz czy string jest wogole wychwytywany przez wyrazenie przez preg_match albo lepiej preg_match_all.
2. Jesli jest wychwytywany to starasz sie go zamienic na proste wyrazenie.
3. Jesli sie uda to probujesz zrobic bardziej skomplikowana rzecz jak zmiana z uzyciem znalezionych wyrazen.

Moge ci zagwarantowac to ze jezeli przejdziesz te wszystkie punkty to twoj skrypt bedzie dzialac.
Mappet
Gdy pokażę źródło strony to oprócz HTML'a wyświetla także zamienione zmienne w postaci <?=$cos;?> a przecież nie powinien. Wiec postanowilem wykorzystac funkcje eval. lecz jednak dostaje zwrot w postaci error'a
Cytat
Parse error: parse error in c:\usr\krasnal\www\mysql\urzadmista\incl_tpl\wyslij.php(96) : eval()'d code on line 1


String to wynik pobranej zawartości z pliku. Wyglada on mniej wiecej tak.
Cytat
<div style="position:absolute;top:{top=nr}cm;left:0cm;font-weight:normal">
<div style="text-align:left;font-size:{font_size=nr}pt">Zał. Nr. 8</div></div>


Nastepnie zamieniam własne tagi typu {top=nr} na zmienne postaci $top['nr']. I na koniec chcę to przepuscić przez eval. Wszystko tyczy się z góry zdefiniowanego stringu we fragmencie kodu. Nie działa gdy pobieram dane...
  1. <?
  2. /*
  3. Fragment mojego kodu, który zreszta nie działa prawidłowo...
  4. */
  5. $fp = file_get_contents('../szablony/'.$_POST['plik'].'.inc');
  6. $replace = array(&#092;"$1['2']\",\"$1\");
  7. $pattern = array(&#092;"/{(w+)=(w+)}/\",\"/s*{(w+)}s*/\");
  8. $txt = preg_replace($pattern,$replace,$fp);
  9.  
  10.  
  11. eval(&#092;"$txt = \"$txt\";\"); 
  12. ?>
trax
hmm, jedna "niewielka korekta":

  1. <?
  2. $top['adresat'] = &#092;"piekny kawałek kodu\";
  3.  
  4. $fp = file_get_contents('fileGetCont.php');
  5.  
  6.  
  7. /* dodane \"\" .\" do replace'a, co elegancko łączy string ze zmienną */
  8. $replace = array(&#092;"\" . $1['2'] . \"\", \"\" . $1 . \"\");
  9.  
  10. $pattern = array(&#092;"/{(w+)=(w+)}/\",\"/s*{(w+)}s*/\");
  11. $txt = preg_replace($pattern, $replace, $fp);
  12.  
  13. eval(&#092;"$txt = \"$txt\";\");
  14.  
  15. ?>


BTW: ciekawy pomysł

pzdr
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.