Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Podmiana Tekstu
Forum PHP.pl > Forum > PHP
Indeo
Proste zadanie. Jest zmienna $tresc_umowy zawierająca przygotowany dokument w HTML.
W dokumencie tym są postawione znaczniki identyfikujące miejsca gdzie mają być wstawione numery stron: {page}

Teraz chodzi o to żeby jak najkrótszym skryptem podmienić wszystkie wystąpienia znacznika {page} na kolejne numery stron (1,2,3 ...)

smile.gif

Pozdrawiam smile.gif
stoprocent
  1. <?php
  2.  
  3. $tresc  = &#092;"COS TAM itd...\";
  4. $numery  = array(&#092;"1\", \"2\", \"3\");
  5. $tresc = str_replace('{PAGE}', $numery, $tresc);
  6.  
  7. ?>

chyba tyle ci wystarczy. biggrin.gif
Indeo
Tak tylko, że wtedy zamiast numerów stron będzie:

Array
//treść pierwszej strony

Array
//treść drugiej strony

itd.

bo usiłujesz wstawić całą tablicę w miejsce znacznika smile.gif
stoprocent
A nie latwiej by bylo zeby to page we wszystkich zaminic na {page1} {page2}(w petli by dodawalo 1)
a pozniej w petli zrobic tak :
  1. <?php
  2.  
  3. $tresc = &#092;"COS TAM itd...\";
  4. for(i=; i < $ilosc_stron ; i++){
  5. $tresc .= str_replace('{page'.$i.'}', $i, $tresc);
  6. }
  7. echo $tresc;
  8.  
  9.  
  10. ?>


Wydje mi sie ze prosciej , sam zadecydujesz.
Indeo
No tak oczywiście najprościej ale czy ktoś w wordzie ręcznie numeruje strony? O to właśnie chodzi żeby gość wstawiał tylko znacznik nowej strony tam gdzie mu się podoba a umowa sama ma się "przenumerować".
hwao
Pod warunekiem ze {page} nie powturzy sie 2 raz w tej samej linijce
  1. <?php
  2. $arrFile = file( 'plik' );
  3. $arrNewText = array();
  4.  
  5. $i = 0; // od czego tam chcesz zaczoc nr'owac :]
  6. foreach( $arrFile AS $strLine )
  7. {
  8. if( strpos( $strLine, '{page}') )
  9. {
  10.  $arrNewText[] = str_replace( '{page}', $i, $strLine );
  11. $i++;
  12. }
  13. else
  14. {
  15.  $arrNewText[] = $strLine;
  16. }
  17. }
  18. ?>

Powinno dzialac pisane z glowy tongue.gif
Indeo
Poradziłem sobie. Wpadłem chyba na najprostszy pomysł ale nie ukrywam że dzięki tobie hwao smile.gif. A to przez to to zdanie:
Cytat
Pod warunekiem ze {page} nie powturzy sie 2 raz w tej samej linijce


A co zrobic żeby sie nie powtarzał? U mnie cały dokument jest w jednej zmiennej, nie w tablicy. A co gdyby explodować tę zmienną do nowej tablicy dzieląc tę zmienną właśnie tam gdzie występuje znacznik podziału strony ?smile.gif To chyba najbardziej intuicyjny podział jaki można zrobić - podział na strony smile.gif

Zrobiłem to tak:
  1. <?php
  2.  
  3. //$tresc_umowy - to jest dukument HTML jako string
  4. $tresc_umowy_stronami=explode('{page}',$tresc_umowy);//rozdzielam treść umowy na poszczególne strony (trudno o bardziej intuicyjny podział :))
  5.  
  6. $tresc_umowy=null;//kasuje dotychczasowa wartość dokumentu
  7.  
  8. foreach($tresc_umowy_stronami as $param=>$tresc_strony){
  9. $numer_strony=$param+1;//pierwsza strona jest '1' a nie '0'
  10. $tresc_umowy.=$numer_strony.$tresc_strony;//zpowrotem scalam cały dokument
  11. }
  12. ?>


Dzięki wszystkim za pomoc.
rogrog
Cytat(Indeo @ 2004-06-15 13:45:06)
Tak tylko, że wtedy zamiast numerów stron będzie:

Array
//treść pierwszej strony

Array
//treść drugiej strony

itd.

bo usiłujesz wstawić całą tablicę w miejsce znacznika smile.gif

oczywiscie że nie - będzie wszystko ok

nie będzie żadnych arrayow, wybierze kolejne elementy tablicy:

RTFM str_replace" title="Zobacz w manualu PHP" target="_manual

(chociażby zobacz na listę parametrów funkcji - tam jest mixed a nie string)
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.