Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dynamiczny bbcode
Forum PHP.pl > Forum > PHP
karolski
witam, mam problem z bbcodem ktory wlasnie tworze chodzi o to zeby funkcja bbcode zamieniala na tabelke string [mecz=id] pobierajac z bazy informacje o meczu, udalo mi sie wyswietlac pojedynczy mecz ale jak napisze jzu dwa to wtedy zamieni tylko ten pierwszy, ogolnie skrypt wyglada tak:
  1. <?php
  2. if (strstr($str, "[mecz=")) {
  3. preg_match("#[mecz=(.*?)]#si", $str, $idem );
  4. $idm = $idem[0];
  5. $id = substr($idm, 6, 1);
  6. $mecz = mysql_fetch_array(mysql_query("zapytanie'"));
  7. $mecz_wyswietl = 'tabelka z pobranymi danymi';
  8. $str = preg_replace("#[mecz=$idm]#si", $mecz_wyswietl, $str);
  9. }
  10. ?>

zapewne powinienm uzyc funkcji count() i zliczyc ilosc elementow [mecz= w stringu i zastosowac petle ale jakos nie moge zliczyc tych elementow.
kulfoniasty
Nie wiem dokladnie jak rozwiazac problem w twoim kodzie, ale przedstawie dla niego alternatywe.

  1. <?
  2. if (strstr($str, "[mecz=")) {
  3. $ar = explode("[mecz=", $str);
  4. //pierwszy wiersz tabeli nie zaczyna sie od ID,pomijamy
  5. for ($i=1; $i<count($ar); $i++){
  6. //wycinam id meczu
  7. $id = substr($ar[$i], 0, strpos($ar[$i], "]"));
  8. // tu pobierasz dane o meczu
  9. $mecz = mysql_fetch_array(mysql_query("zapytanie'"));
  10. $mecz_wyswietl = 'tabelka z pobranymi danymi';
  11. //doklejam dane o meczu jednoczesnie obcinajac wszystkie informacje o IDzie, czyli
     az do ]
  12. $ar[$i] = $mecz_wyswietl." ".substr($ar[$i], strpos($ar[$i], "]"+1));
  13. }
  14. //laczysz poprawiony tekst w 
  15. $out = join("", $ar);
  16. }
  17. ?>

Mam nadzieje ze zadziała bo pisałem na biegu.
karolski
wszytko dziala, dzieki bardzo
tylko jedno musialem poprawic:
  1. <?php
  2. $ar[$i] = $mecz_wyswietl." ".substr($ar[$i], strpos($ar[$i], "]")+1);
  3. ?>
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.