Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Podmiana Tekstu
Indeo
post
Post #1





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


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

(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
stoprocent
post
Post #2





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 17.05.2003
Skąd: Kraków , Londyn

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


  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. (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Indeo
post
Post #3





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
stoprocent
post
Post #4





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 17.05.2003
Skąd: Kraków , Londyn

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


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





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


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ć".
Go to the top of the page
+Quote Post
hwao
post
Post #6


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




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 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Indeo
post
Post #7





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


Poradziłem sobie. Wpadłem chyba na najprostszy pomysł ale nie ukrywam że dzięki tobie hwao (IMG:http://forum.php.pl/style_emoticons/default/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 ?(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) To chyba najbardziej intuicyjny podział jaki można zrobić - podział na strony (IMG:http://forum.php.pl/style_emoticons/default/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.
Go to the top of the page
+Quote Post
rogrog
post
Post #8





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

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


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 (IMG:http://forum.php.pl/style_emoticons/default/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)
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: 7.10.2025 - 04:04