Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czy tekst leży pomiedzy dwoma wierszami, Szablony...
Major
post
Post #1





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 22.07.2004

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


A więc tak. Mam dajmy taki tekst
Kod
hjsagdasd
<!-- START cos -->
{cos.HEADER}
<!--END cos -->
fgdgdfg

i nie wiem jak sprawdzic czy element "{cos.HEADER}" lezy pomiedzy "<!-- START cos -->" i "<!--END cos -->"
Może ktos podać jakąś pomocna funkcje lub/i przykladowy kod?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
quex
post
Post #2





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 11.02.2004

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


można to zrobić explodem, najpierw wyszukać <!-- START cos -->, a później wyszukać <!--END cos -->, i powinno działać (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

dodam kod:
  1. <?
  2. $tekst=&#092;"fgdgdfg\";
  3. $tekst.=&#092;"<!-- START cos -->\";
  4. $tekst.=&#092;"{cos.HEADER}\";
  5. $tekst.=&#092;"<!--END cos -->\";
  6.  
  7. $text = explode(&#092;"<!-- START cos -->\", $tekst);
  8. for($x=1; $x < count($text); $x++){
  9. $slowo= explode(&#092;"<!--END cos -->\", $text[$x]);
  10. $szukane_slowo= $slowo[0];
  11. }
  12. ?>


i później sprawdzamy czy ciągi znaków są takie same.

Ten post edytował quex 14.01.2005, 15:55:54
Go to the top of the page
+Quote Post
Major
post
Post #3





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 22.07.2004

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


Hmm z tego co patrz ne ten skrypt to on mi wyswietli te szukane słowo tak?
A mi chodzi o to by zwrozilo true albo false w zaleznosci czy znajduje sie pomiedzy tymi wierszami.
Go to the top of the page
+Quote Post
quex
post
Post #4





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 11.02.2004

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


no to sprawdzasz
  1. <?
  2. if($szukane_slowo==$slowo_szukane){
  3. $wartosc=&#092;"true\";
  4. } else {
  5. $wartosc=&#092;"false\";
  6. }
  7. ?>


a za zmienną $slowo_szukane podstawiasz to:
Kod
{cos.HEADER}
Go to the top of the page
+Quote Post
tiraeth
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


  1. <?php
  2. function search_in_file($filename, $przed, $searching, $po)
  3. {
  4.  $plik = file_get_contents($filename); // Pobieramy zawartosc pliku
  5.  
  6.  $searching_for = $searching;
  7.  
  8.  if(preg_match(&#092;"/\".$przed.\"n\".$searching_for.\"n\".$po.\"/\", $plik, $array))
  9.  {
  10. // Wartosc zmiennej $searching_for znajduje sie w pliku pomiedzy $przed i $po
  11. return true;
  12.  }
  13.  else
  14.  {
  15.  return false;
  16.  }
  17. }
  18.  
  19. // Przykład użycia
  20. $reading = search_in_file('plik.txt', '<!-- START cos -->', '{cos.HEADER}', '<!--END cos -->');
  21.  
  22. echo ($reading) ? 'Znaleziono' : 'Nie znaleziono';
  23. ?>


nie wiem czy działa... pozdro
(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Major
post
Post #6





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 22.07.2004

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


A więc zastosowałem metode quex. Można powiedziec ze prawie działa. Przedstawie zawartosc pliku index.tpl
Kod
<!-- BEGIN bum -->
{bum.HEADER}
<!-- END bum -->

i niestety jak jest w powyzszym stanie skrypt mi nie działa, zato jak jest
Kod
<!-- BEGIN bum -->{bum.HEADER}<!-- END bum -->

tak to mi działa ale zato mi to nie pasuje. Ale nie moze byc takze
Kod
<!-- BEGIN bum -->{bum.HEADER}<br><!-- END bum -->

Wiec jeszcze gorzej. Ponizej przedstawiam czesc funkcji ktorej uzywam do kompilacji
  1. <?php
  2.                         $blocks = explode('.', $key);
  3.                         $text = explode(&#092;"<!-- BEGIN $blocks[0] -->\", $code);
  4.                         for($x=1; $x < count($text); $x++)
  5.                         {
  6.                             $slowo= explode(&#092;"<!-- END $blocks[0] -->\", $text[$x]);
  7.                             //print ($slowo[0]);
  8.                             $tag = '{'.$key.'}'; 
  9.                             //print_r ($szukane_slowo).'<br>';
  10.                             //echo $tag.'<br>';
  11.                             $sl = $slowo[0];
  12.                             echo $sl.'<br>';
  13.                             echo $tag.'<br>';
  14.                             if($sl == $tag)
  15.                             {
  16.                                 $code = str_replace($tag, $value, $code); 
  17.                                 echo 'bum';
  18.                                 return $code;
  19.                             } 
  20.                             else 
  21.                             {
  22.                                 echo 'bumaa';
  23.                                 return false;
  24.                             }
  25. ?>


---EDIT----
hmm wymysliłem inny kod
  1. <?php
  2. $code_lines = explode(&#092;"n\", $code);
  3. while(list($key, $value) = each($this->template['.'][0])) 
  4. { 
  5. if(strstr($key,'.'))
  6. {
  7. $tag = '{'.$key.'}';
  8. // Second: prepend echo ', append ' . \"n\"; to each line.
  9. $line_count = sizeof($code_lines);
  10. for ($i = 0; $i < $line_count; $i++)
  11. {
  12. $code_lines[$i] = chop($code_lines[$i]);
  13.  
  14. if (preg_match('#<!-- BEGIN (.*?) -->#', $code_lines[$i]) )
  15. {
  16. print_r ($m);
  17. if (preg_match('#<!-- END (.*?) -->#', $code_lines[$i]))
  18. {
  19. print_r ($m);
  20. $code = str_replace($tag, $value, $code_lines[$i]); 
  21. return $code;
  22. }
  23. }
  24. }
  25. }
  26. }
  27. ?>

Ale on rownierz nie zamienia mi
Kod
<!-- BEGIN bum -->
<font color="red">{bum.HEADER}</font>
<!-- END bum -->

Ale już zamienia mi taki kod
Kod
<!-- BEGIN bum --><font color="red">{bum.HEADER}</font><!-- END bum -->

Bóg zapłać.
Go to the top of the page
+Quote Post
DaNTe
post
Post #7





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 7.01.2004
Skąd: Katowice

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


Cytat(Major @ 2005-01-14 15:26:56)
i nie wiem jak sprawdzic czy element "{cos.HEADER}" lezy pomiedzy "<!-- START cos -->" i  "<!--END cos -->"

  1. <?php
  2.  
  3. function pomiedzy($mark,$needle,$haystack)
  4. {
  5.   $needle=str_replace('/','/',addshashes($needle));
  6.   return preg_match(&#092;"/<!-- START $mark -->.*?$needle.*<!-- END $mark -->/s\", $haystack);
  7. }
  8.  
  9. pomiedzy(cos, '{cos.HEADER}', $twojtekst)
  10.  
  11. ?>


nie wystarczy (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Ten post edytował DaNTe 15.01.2005, 14:21:23
Go to the top of the page
+Quote Post
Major
post
Post #8





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 22.07.2004

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


Ale to bedzie mi dzialac jak bedzie <!-- BEGIN bum --><font color="red">{bum.HEADER}</font><!-- END bum --> Ale juz nie bedzie jak <!-- BEGIN bum -->
<font color="red">{bum.HEADER}</font>
<!-- END bum -->
Wydaje mi sie ze cos nei tak jest z preg_match
Go to the top of the page
+Quote Post
tiraeth
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


1. Czy ty człowieku potrafisz przeczytać wszystkie posty (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Część z nich odpowiada w całości na Twoje pytanie ale po części...
2. Oto kod zlepiony z tego topica:
  1. <?php
  2.  
  3. function pomiedzy($mark,$needle,$file)
  4. {
  5.  $plik = file($file);
  6.  $haystack = split(&#092;"n\", $plik);
  7.  
  8.  $needle=str_replace('/','/',addshashes($needle));
  9.  
  10.  return preg_match(&#092;"/<!-- START $mark -->n.*?$needle.*n<!-- END $mark -->/s\", $haystack);
  11. }
  12.  
  13. pomiedzy('cos', '{cos.HEADER}', $plik);
  14. ?>

Wystarczyło dodać \n po pierwszym --> i przed drugim <!--.

Jeżeli sam nie zaczniesz szukać rozwiązania to przykro mi ale nie będziemy dawać Ci gotowców....
Go to the top of the page
+Quote Post
Major
post
Post #10





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 22.07.2004

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


Tiraeth, nie denerwuj sie...
Robiłem tak jak mówiles, dodawalem /n do mojego sposobu ale nie działało.
Go to the top of the page
+Quote Post
crash
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


/n to nie to samo co \n
Go to the top of the page
+Quote Post
Major
post
Post #12





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 22.07.2004

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


Ehh to była akurat 'literowka' ale wkodzie mialem ok czyli \n
Go to the top of the page
+Quote Post
tiraeth
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


Aby \n było traktowane jako przejście do nowej linii (znak nowej linii) musi być umieszczone w podwójnym cudzysłowiu....
Kod
"\n"
Go to the top of the page
+Quote Post
DaNTe
post
Post #14





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 7.01.2004
Skąd: Katowice

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


Cytat(Major @ 2005-01-15 15:31:23)
Ale to bedzie mi dzialac jak bedzie

A sprawdziles ? Modyfikator /s powinien zalatwiac sprawe.
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: 23.08.2025 - 19:27