Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: preg_reciple
Forum PHP.pl > Forum > PHP
hpsi_ssj
Jak zrobić by php przemniał tekst znajdujacy sie w skrypice np:

Kod
<?php  
echo '{ERROR:1}';
?>
gdy w pliku jest przypisana wartosc indexu tablicy:
Kod
<?php
$error['1'] = 'coś tam';
?>
i chialbym zeby skrypt przy gneerowaniu zminiał {ERROR:1} na napis znajdujacy sie w indexie tablicy $error['1'] jak to zrobić ?
borec
  1. <?php
  2.  
  3. $text = 'text {ERROR1} text';
  4.  
  5. echo str_replace('{ERROR1}', $error[1], $text);
  6.  
  7. ?>

btw temat moglbys dostosowac do tresci posta
hpsi_ssj
ech nie o to mi chodzi załuzmy ze mam 2 pliki: news.php i info.php

w news.php mam np cos takiego
  1. <?php
  2. include('info.php');
  3. echo '<form action=\"cos tam...\" method=\"post\">
  4. <input type=\"text\" name=\"text\" value=\"{news:topic}\">
  5. <input type=\"submint\" name=\"send\" value=\"{gloabl:send}\">
  6. </form>';
  7. ?>
i mam plik info.php

  1. <?php
  2. $news['topic'] = 'napisz temat newsu';
  3. /********************************/
  4. $gloabl['send'] = 'Wysyłam';
  5. ?>


i chce zeby w news php w czasie echowania zminaiał {news:topic} na wartsc co znajduje sie w indxie tablicy $news['topic'], a to co jest w {gloabl:send} na to co jest w $glabl['send']
limak
nie wiem czy to jest wydajne.... ale nic mi innego nie przychodzi do głowy (oprócz zastosowania jakiegos systemu szablonowego)

info.php
  1. <?php
  2.  
  3. $news['topic'] = 'napisz temat newsu';
  4. /********************************/
  5. $gloabl['send'] = 'Wysyłam';
  6.  
  7. $fp = fopen(&#092;"info.php\", \"r\");
  8. $plik = fread($fp, filesize(&#092;"info.php\"));
  9.  
  10. $plik=str_replace(&#092;"{news:topic}\", $news['topic'], $plik);
  11. /****************************/
  12. $plik=str_replace(&#092;"{gloab:send}\", $gloab['send'], $plik);
  13.  
  14. fclose($fp);
  15.  
  16. echo($plik);
  17.  
  18. ?>


news.php
  1. <?php
  2.  
  3. echo '<form action=\"cos tam...\" method=\"post\">
  4. <input type=\"text\" name=\"text\" value=\"{news:topic}\">
  5. <input type=\"submint\" name=\"send\" value=\"{gloabl:send}\">
  6. </form>';
  7. ?>


nie wiem czy to dziala, nie sprawdzalem.... smile.gif
hpsi_ssj
a jak to zrobic uzywacjac systemu szablonów (nigdy jeszcze tego nie robiłem wiec nie wiem) withstupidsmiley.gif
limak
ja tez nie wiem smile.gif bo szablonami sie jeszcze nie bawilem..... mozesz sobie o nich poczytac tutaj : http://smarty.php.net
seaquest
mozesz zastosowac to tak:

  1. <?php
  2. $news['topic'] = 'napisz temat newsu';
  3. /********************************/
  4. $global['send'] = 'Wysyłam';
  5. /********************************/
  6. $text = '<form action=\"cos tam...\" method=\"post\">
  7. <input type=\"text\" name=\"text\" value=\"{news:topic}\">
  8. <input type=\"submit\" name=\"send\" value=\"{gloabl:send}\">
  9. </form>';
  10. /********************************/
  11. $text = preg_replace ('/{(.+?):(.+?)}/ie', &#092;"$1['2']\", $text);
  12. }
  13. ?>


to jest wszystko - 1 linijka z preg_replace, ale przy templatach nie mozesz zastosowac echo, albo musisz zastosowac ob_start i ob_get_clean
hpsi_ssj
hmm super ale czy by się nie udało zrobić w ten sposób aby: bez zmiennych ?
zebry skrypt automatycnzie przegladał kazda linijke w kodzie i sam zminiał to co jest potrzebne ?
seaquest
no to otworz plik zczytaj go i poddaj transformacji
hpsi_ssj
w jaki sposob plik zminic tak aby przneiałał tekst w całym skrypcie ?
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.