Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zamiana własnego tagu na zmienną
Mappet
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 10.06.2004

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


  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

Ten post edytował Mappet 27.03.2005, 01:17:47
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
rzseattle
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 554
Pomógł: 0
Dołączył: 4.04.2002
Skąd: Tychy

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


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.
Go to the top of the page
+Quote Post
Mappet
post
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 10.06.2004

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


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


Ten post edytował Mappet 29.03.2005, 12:55:14
Go to the top of the page
+Quote Post
trax
post
Post #4





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 21.01.2004

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


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

Ten post edytował trax 29.03.2005, 17:49:12
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 03:06