Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z str_replace
Forum PHP.pl > Forum > PHP
lukir
Mam taki skrypt (fragment skryptu kalendarza):
  1. <?php
  2.  
  3. function cal()
  4.   {
  5.   $months=array(1=>'Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień');
  6.   $dofs=array('Niedziela', 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota');
  7.   $tdofs=array(1=>'Pn', 'Wt', 'Śr', 'Cz', 'Pi', 'So', 'Ni');
  8.  
  9.   $y=date('Y');
  10.   $m=date('n');
  11.   $d=date('j');
  12.   $dim=date('t');
  13.   $dow=date('w');
  14.   $arabic=array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12');
  15.   $words=array('stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia');
  16.   $nummonth=str_replace($arabic, $words, $m);//tu może być coś nie tak....
  17.   $strdate = &#092;"Dzi&para; jest \";
  18.   $strdate .= &#092;"$dofs[$dow],<br>\";
  19.   $strdate .= &#092;"$d \";
  20.   $strdate .= &#092;"$nummonth \";
  21.   $strdate .= &#092;"$y \";
  22.   $strdate .= &#092;"r.\";
  23.   $caltitle = &#092;"$months[$m] \";
  24.   $caltitle .= &#092;"$y\";
  25.   //teraz mniej ważna część kodu...
  26.   if ($dow==0) $dow=7;
  27.   $fd= 1 + ($dow - ($d % 7) + 7) % 7;
  28.   print &#092;"<table class=\"cal\" cellspacing=0 cellpadding=0>n\";
  29.   print &#092;"<tr><td colspan=7>&nbsp;</td></tr><tr><td class=\"date\" colspan=7>\" . $caltitle . \"<br><br></td></tr>\";
  30.   print '<tr>';
  31.   foreach ($tdofs as $day)
  32.     {
  33.       print &#092;"<td class=\"header\">$day</td>\";
  34.     }
  35.   print &#092;"</tr>n\";
  36.   $cd=0;
  37.   $cc=1;
  38.   print &#092;"<tr>n\";
  39.   while ($cd < $dim)
  40.     {
  41.     print '<td align=center>'; 
  42.     
  43.     if ($cc>=$fd)
  44.       {
  45.       if ($cd+1==$d) print &#092;"<span class=\"dday\">\";
  46.       $mk = $cc % 7;
  47.       if ($mk == 0) print &#092;"<span class=\"fday\">\";
  48.       if ($mk == 6) print &#092;"<span class=\"sday\">\";
  49.       $cd++;
  50.       print $cd;
  51.       if ($mk == 6) print &#092;"</span\";
  52.       if ($mk == 0) print '</span>';
  53.       if ($cd==$d) print &#092;"</span>\";
  54.       } 
  55.     else
  56.       {
  57.       print '&nbsp;';
  58.       }  
  59.   
  60.     print '</td>';
  61.     if ($cc % 7 == 0) print &#092;"</tr>n<tr>\";
  62.     $cc++;
  63.     }
  64.   while ($cc % 7!=1) 
  65.     {
  66.     print '<td>&nbsp;</td>';
  67.     $cc++;
  68.     }
  69.   print &#092;"</tr>n\";
  70.   print &#092;"<tr><td colspan=7>&nbsp;</td></tr>n\";
  71.   //koniec mniej ważnej części kodu;P...
  72.   print &#092;"<tr><td colspan=7>&nbsp;</td></tr><tr><td class=\"dayofweek\" colspan=7>\" . $strdate . \"</td></tr><tr><td colspan=7>&nbsp;</td></tr>\";
  73.   print &#092;"</table>n\";
  74.  
  75. }
  76.  
  77. ?>

Kiedy jest 3 października 2004 (niedziela) to pod kalendarzem widnieje podpis - "Dziś jest niedziela, 3 stycznia0 2004 r." i nie wiem czemu tak się dzieje... (powinno być zamiast "stycznia0" -> "października") Please help everybody!!!
kicaj
Tyle kodu zeby wyswietlic jedno zdanie...questionmark.gif
Przeczytaj art na php.pl!
lukir
ten skrypt nie wyświetla jednego jedynego zdania ale cały kalendarz a pod nim to znajduje się ów nieprawidłowy tekst... rolleyes.gif
Lukasz Luczak
Witam,

Nie rób tego za pomocą str_replace.

Wykorzystaj lepiej kilka wywołań date - albo jedno wywołanie plus explode. Potem indeksuj odpowiednio tablice.

Pozdrawiam
Mappet
Kod
$arabic=array('01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12');
lukir
Dzięki,
powyższa metoda okazała się skuteczna - all is ok!!! Thank you, Mappet!
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.