За последние 24 часа нас посетили 16675 программистов и 1600 роботов. Сейчас ищут 1319 программистов ...

Подскажите пожалуйста!

Тема в разделе "PHP для новичков", создана пользователем vahrumka, 28 июн 2014.

  1. vahrumka

    vahrumka Новичок

    С нами с:
    28 июн 2014
    Сообщения:
    10
    Симпатии:
    0
    Имеется код, как вывести дату на русском языке, точнее русскими буквами

    <?php



    class Comment
    {
    private $data = array();

    public function __construct($row)
    {
    /*
    / The constructor
    */

    $this->data = $row;
    }

    public function markup()
    {
    /*
    / This method outputs the XHTML markup of the comment
    */

    // Setting up an alias, so we don't have to write $this->data every time:
    $d = &$this->data;

    $link_open = '';
    $link_close = '';

    if($d['url']){

    // If the person has entered a URL when adding a comment,
    // define opening and closing hyperlink tags

    $link_open = '<a href="'.$d['url'].'">';
    $link_close = '</a>';
    }

    // Converting the time to a UNIX timestamp:
    $d['dt'] = strtotime($d['dt']);


    // Needed for the default gravatar image:
    $url = 'http://'.dirname($_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]).'/img/default_avatar.png';

    return '

    <div class="comment">
    <div class="avatar">
    '.$link_open.'
    <img src="../images/default_avatar.png" />
    '.$link_close.'
    </div>

    <div class="name">'.$link_open.$d['name'].$link_close.'</div>
    <div class="date" title="Added at '.date('H:i \o\n d M Y',$d['dt']).'">'.date('d M Y',$d['dt']).'</div>
    <p>'.$d['body'].'</p>
    </div>
    ';
    }

    public static function validate(&$arr)
    {
    /*
    / This method is used to validate the data sent via AJAX.
    /
    / It return true/false depending on whether the data is valid, and populates
    / the $arr array passed as a paremter (notice the ampersand above) with
    / either the valid input data, or the error messages.
    */

    $errors = array();
    $data = array();

    // Using the filter_input function introduced in PHP 5.2.0

    if(!($data['email'] = filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)))
    {
    $errors['email'] = 'Please enter a valid Email.';
    }

    if(!($data['url'] = filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL)))
    {
    // If the URL field was not populated with a valid URL,
    // act as if no URL was entered at all:

    $url = '';
    }

    // Using the filter with a custom callback function:

    if(!($data['body'] = filter_input(INPUT_POST,'body',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
    {
    $errors['body'] = 'Please enter a comment body.';
    }

    if(!($data['name'] = filter_input(INPUT_POST,'name',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
    {
    $errors['name'] = 'Please enter a name.';
    }

    if(!empty($errors)){

    // If there are errors, copy the $errors array to $arr:

    $arr = $errors;
    return false;
    }

    // If the data is valid, sanitize all the data and copy it to $arr:

    foreach($data as $k=>$v){
    $arr[$k] = mysql_real_escape_string($v);
    }

    // Ensure that the email is lower case:

    $arr['email'] = strtolower(trim($arr['email']));

    return true;

    }

    private static function validate_text($str)
    {
    /*
    / This method is used internally as a FILTER_CALLBACK
    */

    if(mb_strlen($str,'utf8')<1)
    return false;

    // Encode all html special characters (<, >, ", & .. etc) and convert
    // the new line characters to <br> tags:

    $str = nl2br(htmlspecialchars($str));

    // Remove the new line characters that are left
    $str = str_replace(array(chr(10),chr(13)),'',$str);

    return $str;
    }

    }

    ?>
     
  2. nskrazor

    nskrazor Новичок

    С нами с:
    19 июн 2014
    Сообщения:
    25
    Симпатии:
    0
    Адрес:
    Новосибирск
    Напиши в каком формате нужно вывести дату.. Например 12 февраля 2014 г.
     
  3. vahrumka

    vahrumka Новичок

    С нами с:
    28 июн 2014
    Сообщения:
    10
    Симпатии:
    0
    У меня выводит 28 jun 2014, нужно так же только 28 июня 2014
     
  4. nskrazor

    nskrazor Новичок

    С нами с:
    19 июн 2014
    Сообщения:
    25
    Симпатии:
    0
    Адрес:
    Новосибирск
    короче держи
    Код (PHP):
    1. <?php
    2.  
    3.  
    4.  
    5. class Comment
    6. {
    7. private $data = array();
    8.  
    9. public function __construct($row)
    10. {
    11. /*
    12. / The constructor
    13. */
    14.  
    15. $this->data = $row;
    16. }
    17.  
    18. public function markup()
    19. {
    20. /*
    21. / This method outputs the XHTML markup of the comment
    22. */
    23.  
    24. // Setting up an alias, so we don't have to write $this->data every time:
    25. $d = &$this->data;
    26.  
    27. $link_open = '';
    28. $link_close = '';
    29.  
    30. if($d['url']){
    31.  
    32. // If the person has entered a URL when adding a comment,
    33. // define opening and closing hyperlink tags
    34.  
    35. $link_open = '<a href="'.$d['url'].'">';
    36. $link_close = '</a>';
    37. }
    38.  
    39. // Converting the time to a UNIX timestamp:
    40. $d['dt'] = time();
    41.  
    42.  
    43. // Needed for the default gravatar image:
    44. $url = 'http://'.dirname($_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]).'/img/default_avatar.png';
    45.  
    46. return '
    47.  
    48. <div class="comment">
    49. <div class="avatar">
    50. '.$link_open.'
    51. <img src="../images/default_avatar.png" />
    52. '.$link_close.'
    53. </div>
    54.  
    55. <div class="name">'.$link_open.$d['name'].$link_close.'</div>
    56. <div class="date" title="Added at '.date('H:i \o\n d M Y',$d['dt']).'">'.$this->rusdate($d['dt'], '%DAYWEEK%, j %MONTH% Y, G:i' );.'</div>
    57. <p>'.$d['body'].'</p>
    58. </div>
    59. ';
    60. }
    61.  
    62.  
    63.  
    64. private static function rusdate($d, $format = 'j %MONTH% Y', $offset = 0)
    65. {
    66.     $montharr = array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');
    67.     $dayarr = array('понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье');
    68.  
    69.     $d += 3600 * $offset;
    70.  
    71.     $sarr = array('/%MONTH%/i', '/%DAYWEEK%/i');
    72.     $rarr = array( $montharr[date("m", $d) - 1], $dayarr[date("N", $d) - 1] );
    73.  
    74.     $format = preg_replace($sarr, $rarr, $format); 
    75.     return date($format, $d);
    76. }
    77.  
    78. public static function validate(&$arr)
    79. {
    80. /*
    81. / This method is used to validate the data sent via AJAX.
    82. /
    83. / It return true/false depending on whether the data is valid, and populates
    84. / the $arr array passed as a paremter (notice the ampersand above) with
    85. / either the valid input data, or the error messages.
    86. */
    87.  
    88. $errors = array();
    89. $data = array();
    90.  
    91. // Using the filter_input function introduced in PHP 5.2.0
    92.  
    93. if(!($data['email'] = filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)))
    94. {
    95. $errors['email'] = 'Please enter a valid Email.';
    96. }
    97.  
    98. if(!($data['url'] = filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL)))
    99. {
    100. // If the URL field was not populated with a valid URL,
    101. // act as if no URL was entered at all:
    102.  
    103. $url = '';
    104. }
    105.  
    106. // Using the filter with a custom callback function:
    107.  
    108. if(!($data['body'] = filter_input(INPUT_POST,'body',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
    109. {
    110. $errors['body'] = 'Please enter a comment body.';
    111. }
    112.  
    113. if(!($data['name'] = filter_input(INPUT_POST,'name',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
    114. {
    115. $errors['name'] = 'Please enter a name.';
    116. }
    117.  
    118. if(!empty($errors)){
    119.  
    120. // If there are errors, copy the $errors array to $arr:
    121.  
    122. $arr = $errors;
    123. return false;
    124. }
    125.  
    126. // If the data is valid, sanitize all the data and copy it to $arr:
    127.  
    128. foreach($data as $k=>$v){
    129. $arr[$k] = mysql_real_escape_string($v);
    130. }
    131.  
    132. // Ensure that the email is lower case:
    133.  
    134. $arr['email'] = strtolower(trim($arr['email']));
    135.  
    136. return true;
    137.  
    138. }
    139.  
    140. private static function validate_text($str)
    141. {
    142. /*
    143. / This method is used internally as a FILTER_CALLBACK
    144. */
    145.  
    146. if(mb_strlen($str,'utf8')<1)
    147. return false;
    148.  
    149. // Encode all html special characters (<, >, ", & .. etc) and convert
    150. // the new line characters to <br> tags:
    151.  
    152. $str = nl2br(htmlspecialchars($str));
    153.  
    154. // Remove the new line characters that are left
    155. $str = str_replace(array(chr(10),chr(13)),'',$str);
    156.  
    157. return $str;
    158. }
    159.  
    160. }
    Выведет: пятница, 16 марта 2012, 23:59
     
  5. vahrumka

    vahrumka Новичок

    С нами с:
    28 июн 2014
    Сообщения:
    10
    Симпатии:
    0
    <div class="date" title="Added at '.date('H:i \o\n d M Y',$d['dt']).'">'.$this->rusdate($d['dt'], '%DAYWEEK%, j %MONTH% Y, G:i' );.'</div> вот здесь ошибку выдает
     
  6. nskrazor

    nskrazor Новичок

    С нами с:
    19 июн 2014
    Сообщения:
    25
    Симпатии:
    0
    Адрес:
    Новосибирск
    Сори, опечатался, вот так попробуй.
    Код (PHP):
    1. <?php
    2. class Comment
    3. {
    4.     private $data = array();
    5.  
    6.     public function __construct($row)
    7.     {
    8.         /*
    9.         / The constructor
    10.         */
    11.  
    12.         $this->data = $row;
    13.     }
    14.  
    15.     public function markup()
    16.     {
    17.         /*
    18.         / This method outputs the XHTML markup of the comment
    19.         */
    20.  
    21. // Setting up an alias, so we don't have to write $this->data every time:
    22.         $d = &$this->data;
    23.  
    24.         $link_open = '';
    25.         $link_close = '';
    26.  
    27.         if($d['url']){
    28.  
    29. // If the person has entered a URL when adding a comment,
    30. // define opening and closing hyperlink tags
    31.  
    32.             $link_open = '<a href="'.$d['url'].'">';
    33.             $link_close = '</a>';
    34.         }
    35.  
    36. // Converting the time to a UNIX timestamp:
    37.         $d['dt'] = time();
    38.  
    39.  
    40. // Needed for the default gravatar image:
    41.         $url = 'http://'.dirname($_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]).'/img/default_avatar.png';
    42.  
    43.         return '
    44.  
    45. <div class="comment">
    46. <div class="avatar">
    47. '.$link_open.'
    48. <img src="../images/default_avatar.png" />
    49. '.$link_close.'
    50. </div>
    51.  
    52. <div class="name">'.$link_open.$d['name'].$link_close.'</div>
    53. <div class="date" title="Added at '.date('H:i \o\n d M Y',$d['dt']).'">'.$this->rusdate($d['dt'], '%DAYWEEK%, j %MONTH% Y, G:i' ).'</div>
    54. <p>'.$d['body'].'</p>
    55. </div>
    56. ';
    57.     }
    58.  
    59.  
    60.  
    61.     private static function rusdate($d, $format = 'j %MONTH% Y', $offset = 0)
    62.     {
    63.         $montharr = array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');
    64.         $dayarr = array('понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье');
    65.  
    66.         $d += 3600 * $offset;
    67.  
    68.         $sarr = array('/%MONTH%/i', '/%DAYWEEK%/i');
    69.         $rarr = array( $montharr[date("m", $d) - 1], $dayarr[date("N", $d) - 1] );
    70.  
    71.         $format = preg_replace($sarr, $rarr, $format);
    72.         return date($format, $d);
    73.     }
    74.  
    75.     public static function validate(&$arr)
    76.     {
    77.         /*
    78.         / This method is used to validate the data sent via AJAX.
    79.         /
    80.         / It return true/false depending on whether the data is valid, and populates
    81.         / the $arr array passed as a paremter (notice the ampersand above) with
    82.         / either the valid input data, or the error messages.
    83.         */
    84.  
    85.         $errors = array();
    86.         $data = array();
    87.  
    88. // Using the filter_input function introduced in PHP 5.2.0
    89.  
    90.         if(!($data['email'] = filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)))
    91.         {
    92.             $errors['email'] = 'Please enter a valid Email.';
    93.         }
    94.  
    95.         if(!($data['url'] = filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL)))
    96.         {
    97. // If the URL field was not populated with a valid URL,
    98. // act as if no URL was entered at all:
    99.  
    100.             $url = '';
    101.         }
    102.  
    103. // Using the filter with a custom callback function:
    104.  
    105.         if(!($data['body'] = filter_input(INPUT_POST,'body',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
    106.         {
    107.             $errors['body'] = 'Please enter a comment body.';
    108.         }
    109.  
    110.         if(!($data['name'] = filter_input(INPUT_POST,'name',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
    111.         {
    112.             $errors['name'] = 'Please enter a name.';
    113.         }
    114.  
    115.         if(!empty($errors)){
    116.  
    117. // If there are errors, copy the $errors array to $arr:
    118.  
    119.             $arr = $errors;
    120.             return false;
    121.         }
    122.  
    123. // If the data is valid, sanitize all the data and copy it to $arr:
    124.  
    125.         foreach($data as $k=>$v){
    126.             $arr[$k] = mysql_real_escape_string($v);
    127.         }
    128.  
    129. // Ensure that the email is lower case:
    130.  
    131.         $arr['email'] = strtolower(trim($arr['email']));
    132.  
    133.         return true;
    134.  
    135.     }
    136.  
    137.     private static function validate_text($str)
    138.     {
    139.         /*
    140.         / This method is used internally as a FILTER_CALLBACK
    141.         */
    142.  
    143.         if(mb_strlen($str,'utf8')<1)
    144.             return false;
    145.  
    146. // Encode all html special characters (<, >, ", & .. etc) and convert
    147. // the new line characters to <br> tags:
    148.  
    149.         $str = nl2br(htmlspecialchars($str));
    150.  
    151. // Remove the new line characters that are left
    152.         $str = str_replace(array(chr(10),chr(13)),'',$str);
    153.  
    154.         return $str;
    155.     }
    156.  
    157. }
     
  7. vahrumka

    vahrumka Новичок

    С нами с:
    28 июн 2014
    Сообщения:
    10
    Симпатии:
    0
    Огромнейшее тебе спасибо!
     
  8. nskrazor

    nskrazor Новичок

    С нами с:
    19 июн 2014
    Сообщения:
    25
    Симпатии:
    0
    Адрес:
    Новосибирск
  9. vahrumka

    vahrumka Новичок

    С нами с:
    28 июн 2014
    Сообщения:
    10
    Симпатии:
    0
    Работает только время комментария меняется не остается зафиксированным с момента комментария, а при обновлении страницы выставляет текущую дату.

    Добавлено спустя 4 минуты 54 секунды:
    Все разобрался вернул $d['dt'] = strtotime($d['dt']); вместо $d['dt'] = time();