Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z parsowaniem kodu php
Forum PHP.pl > Forum > Przedszkole
mefistofeles
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 ?
Pawel_W
prędzej wyrażenia regularne smile.gif
mefistofeles
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.  

Spawnm
Proszę nadać sensowny tytuł.
mefistofeles
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.
krzywy36
nie chce mi się czytać tego kodu, ale obstawiam że ten $item[] t po prostu tablica z newsem ;>
mefistofeles
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 ?
krzywy36
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
mefistofeles
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 ?

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