Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Problem z parsowaniem kodu php
mefistofeles
post
Post #1





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


Mam w kodzie pewnej strony coś takiego:

$newsTemplate = 'Komentarzy ({komentarze})';

Rozumiem, że klamerek używa się, gdy nie można bezpośrednio wrzucić kodu php, ale z czym to się je.

Chyba, żeby to działało to trzeba użyc jakiegoś bufora i zamienić to co w klamerkach na kod php, dobrze mówie ?

Przeszukałem, wszystkie pliki na serwerze aby wyszukał mi ten ciąg: {komentarze}, ale znalazł, go tylko w tym pliku o którym mowa,
a przecież gdzieś w innym pliku powinna być jakaś funkcja, która przetwarza {komentarze} na kod php, jednak w żadnym innym pliku
nie znalazłem już tego stringa.

To co w takim razie zamienia {komentarze} na kod php skoro tylko w tym pliku występuje ten ciąg ?

Jeśli chciałbym sam to zamienić na kod php to jak to zrobić, bufor i str_replace ?

Ten post edytował mefistofeles 21.04.2010, 10:59:39
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Pawel_W
post
Post #2





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


prędzej wyrażenia regularne smile.gif
Go to the top of the page
+Quote Post
mefistofeles
post
Post #3





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


No rzeczywiście, jest coś takiego:
  1. $newsContent .= preg_replace('/{(\w+)}/e', '$item[\\1]',$newsTemplate);


Ale czym jest $item[\\1] questionmark.gif
Za jakie zapytanie z tego kodu to odpowiada, bo coś nie kminie:

  1. if (empty($_GET['news']))
  2. {
  3. $news = $baza->getRows("select * from news where kategoria=$kat order by data desc limit 7");
  4. if (!empty($news)){
  5. foreach($news as $item){
  6. if ($i%2==0){
  7. $item['styl']=' style="background-color:#ededed"';
  8. }else{
  9. $item['styl']="";
  10. }
  11. $i++;
  12.  
  13. $item['t2']=strip_tags($item['t2']);
  14. if (strlen($item['t2'])>400){
  15. $item['t2']=substr($item['t2'], 0, 400);
  16. $item['t2']=substr($item['t2'], 0, strrpos($item['t2'], ". ")+1);
  17.  
  18.  
  19. $item['wiecej'] ='<a href="?news='.$item['id'].'">Więcej</a> ';
  20. }
  21.  
  22.  
  23.  
  24. $item['t2']=$baza->konwersja($item['t2']);
  25. if (empty($merr)) $merr = $item['t2'];
  26. $item['t1']=$baza->konwersja($item['t1']);
  27. $item['t1'] ='<a href="?news='.$item['id'].'">'.$item['t1'].'</a> ';
  28.  
  29. $item ['komentarze'] = intval($item['komentarze']) - 1;
  30.  
  31. $path = 'gf/foto/'.$item['id'].'/m';
  32. $obr = $baza->getPhoto($_SERVER['DOCUMENT_ROOT'].'/'.$path);
  33.  
  34. if ($obr!='')
  35. $item['img'] ='<a style="padding:5px;" target="Foto" href="gf/foto/'.$item['id'].'/'.$obr.'" rel="lightbox"><img src="'.$path.'/'.$obr.'" alt="Foto"/></a>';
  36.  
  37. if ($item['forum']!='')
  38. $item['forum'] = ' <a href="'.$item['forum'].'">Forum</a>';
  39.  
  40.  
  41. $newsContent .= preg_replace('/{(\w+)}/e', '$item[\\1]',$newsTemplate);
  42. }
  43. }
  44. }else{
  45. $baza->incrementVisited($idNews);
  46.  
  47. $id = intval($_GET['news']);
  48. $item = $baza->getRow("select * from news where id=$id");
  49.  
  50.  
  51. $item['t2']=$baza->konwersja($item['t2']);
  52. $item['t1']=$baza->konwersja($item['t1']);
  53.  
  54. $path = 'gf/foto/'.$item['id'].'/m';
  55. $obr = $baza->getPhoto($_SERVER['DOCUMENT_ROOT'].'/'.$path);
  56.  
  57. if ($obr!='')
  58. $item['img'] ='<a target="Foto" href="gf/foto/'.$item['id'].'/'.$obr.'" rel="lightbox"><img src="'.$path.'/'.$obr.'" alt="Foto"/></a>';
  59.  
  60. $komentarze = $baza->getRows("select * from komentarz where id_art = $id");
  61. if (!empty($komentarze)){
  62. foreach ($komentarze as $kom){
  63. $data = new DateTime($kom['dd']);
  64. $data2 = new DateTime("2009-03-00 00:29:51");
  65. if ($data<$data2){
  66. $kom['komentarz'] = $baza->konwersja($kom['komentarz']);
  67. $kom['autor'] = $baza->konwersja($kom['autor']);
  68. }
  69. $item['kom'].='<span class="data">'.$kom['dd']."</span> <span style='font-weight:bold'>".$kom['autor']."</span><br />".$kom['komentarz']."<hr />";
  70. }
  71. }
  72.  
  73. $item['kom']="<br/>Dodaj Komentarz:<br /><form action='index.php?news=$id&amp;action=add_kom' method='post' onsubmit='return check(this);'><input type='hidden' name='id_art' value='$id'/>Autor: <input type='text' name='autor' /><br />Komentarz:<br /><textarea name='komentarz'></textarea><br />3 + 5 = <input type='text' name='suma' /><br /><input type='submit' value='Dodaj' /></form><br />Komentarze:<p>".$item['kom']."</p>";
  74. $item['message'] = "<span style='color:red'>".$message."</span><br/>";
  75. $newsContent .= preg_replace('/{(\w+)}/e', '$item[\\1]',$newsTemplate2);
  76. }
  77. break;
  78. }
  79. }
  80.  



Ten post edytował mefistofeles 21.04.2010, 10:25:23
Go to the top of the page
+Quote Post
Spawnm
post
Post #4





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Proszę nadać sensowny tytuł.
Go to the top of the page
+Quote Post
mefistofeles
post
Post #5





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


Odświeżam temat.

Może ktoś mi powie chociaż, czym jest $item[\\1], bo jak to zamieniam na jakiegoś stringa,
to robi się masakra z całą stroną, tak jakby ta zmienna zawierała w sobie kilka zmiennych.

Przykład online:
Zamieniłem kod:

$newsContent .= preg_replace('/{(\w+)}/e', $item[\\1],$newsTemplate);

na:

$newsContent .= preg_replace('/{(\w+)}/e', 'dupa',$newsTemplate);

No i teraz zobaczcie różnicę między oryginalną stroną:

http://www.sloworegionu.pl
a
http://www.sloworegionu.pl/index2.php

Zamienia mi wszystko, a ja chciałbym zmienić tylko to co jest obok 'komentarzy'.
O co tutaj chodzi ?


Help.
Podpowiedzcie coś, bo 1 raz się z czymś takim spotykam.
Go to the top of the page
+Quote Post
krzywy36
post
Post #6





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


nie chce mi się czytać tego kodu, ale obstawiam że ten $item[] t po prostu tablica z newsem ;>

Ten post edytował krzywy36 25.04.2010, 13:38:10


--------------------
pretty as a shit.
Go to the top of the page
+Quote Post
mefistofeles
post
Post #7





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


A jak się odwołać tylko do jednego elementu tej tablicy ?
Bo jak coś zmieniam to praktycznie wszystkie elementy na stronie się zmieniają (index2), a ja chce zmienić tylko to
miejsce w którym wyświetla się ilość komentarzy ?
Go to the top of the page
+Quote Post
krzywy36
post
Post #8





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


może $item['komentarze1'], nie jestem na tyle zaawansowany, żeby zrozumieć ten kod w całości, ale wygląda na to, że to co jest w {} jest wstawiane przed 1 w $item[' 1'] a przynajmniej tak m sie zdaje haha.gif


--------------------
pretty as a shit.
Go to the top of the page
+Quote Post
mefistofeles
post
Post #9





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


Proszę osoby znające dobrze temat o pomoc, bo od wielu dni nie mogę rozgryźć tego kodu:

  1. $newsContent .= preg_replace('/{(\w+)}/e', $item[\\1],$newsTemplate);


Co to jest:

  1. $item[\\1]
?

Pozwólcie, że co jakiś czas odświeżę temat.
To musi być banał dla osób typu Nospor tongue.gif
Maybe you can help ?



Ten post edytował mefistofeles 27.04.2010, 22:56:15
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Co to jest:

[PHP] pobierz, plaintext
$item[\\1]
?


Cytat
To musi być banał dla osób typu Nospor tongue.gif

Za ten jęzor na końcu powiem ci tylko (aż) tyle:
zajrzyj do manuala:
http://pl2.php.net/preg_replace
masz tam to jak wół z jęzorem opisane. smile.gif
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 07:48