За последние 24 часа нас посетил 18661 программист и 1588 роботов. Сейчас ищут 1914 программистов ...

\n

Тема в разделе "Прочее", создана пользователем C, 6 июл 2007.

  1. C

    C Активный пользователь

    С нами с:
    28 май 2006
    Сообщения:
    326
    Симпатии:
    0
    вот я ввёл этот знак \n и он отображается как я его ввёл, а у меня на сайте почему-то превращается в новую строчку, объясните.
     
  2. C

    C Активный пользователь

    С нами с:
    28 май 2006
    Сообщения:
    326
    Симпатии:
    0
    При входте применяю:

    PHP:
    1. <?
    2. function my_safen_str($value, $b_forbid_html = true)
    3. {
    4.     $value = trim($value);
    5.     if($b_forbid_html)
    6.         $value = htmlspecialchars($value, ENT_QUOTES);
    7.     else
    8.         $value = mysql_real_escape_string($value);
    9.     return $value;
    10. }
    11. ?>
    На выходе:

    PHP:
    1. <?
    2. //replaces just closed tags
    3. function my_convert_simple_tags_smart($str)
    4. {
    5.     $arr_code = array
    6.         (
    7.             "/\[b\](.*)\[\/b\]/Us",
    8.             "/\[i\](.*)\[\/i\]/Us",
    9.             "/\[s\](.*)\[\/s\]/Us",
    10.             "/\[u\](.*)\[\/u\]/Us",
    11.             "/\[h\](.*)\[\/h\]/Us",
    12.             "/\[center\](.*)\[\/center\]/Us"
    13.         );
    14.     $arr_html = array
    15.         (
    16.             "<b>\\1</b>",
    17.             "<i>\\1</i>",
    18.             "<s>\\1</s>",
    19.             "<u>\\1</u>",
    20.             "<h3>\\1</h3>",
    21.             "<center>\\1</center>"
    22.         );
    23.     return preg_replace($arr_code, $arr_html, $str);
    24. }
    25.  
    26. function my_convert_links($str)
    27. {
    28.     // [link [url=http://gamedev.ru]http://gamedev.ru[/url] Game Dev Ru]
    29.     $pattern = "/\[link\s+(\S+)\s+(.+)\]/U";
    30.     $replacement = "<a class='link' href='\\1'>\\2</a>\n";
    31.     $str = preg_replace($pattern, $replacement, $str);
    32.     // [url=http://blabla.com]http://blabla.com[/url] [url=ftp://blabla.com]ftp://blabla.com[/url]
    33.     $pattern = "/(?<!=)((?:http|https|ftp):\/\/[^\s\]\[]+\w)(?!>)/";
    34.     $replacement = "<a class='link' href=\"\\1\">\\1</a>\n";
    35.     return preg_replace($pattern, $replacement, $str);
    36. }
    37.  
    38. function my_convert_new_line($str)
    39. {
    40.     return nl2br($str);
    41.     //return str_replace("\n", "<br>", $str);
    42. }
    43.  
    44. function my_convert_email($str)
    45. {
    46.     $pattern = "/(\w+)(@)(\w+\.\w+)/";
    47.     $replacement = "<a href='mailto:\\1 at \\3' class='mail' " .
    48.         "title='Собаку поставьте сами.' >".
    49.         "\\1</a>\n";
    50.     return preg_replace($pattern, $replacement, $str);
    51. }
    52.  
    53. function my_convert_code($str)
    54. {
    55.     $str = trim($str);
    56.     $str = str_replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;", $str);
    57.     return "<pre class='code'>" . $str . "</pre>";
    58. }
    59.  
    60. function my_format_str_for_view($str)
    61. {
    62.     if(strlen($str) < 3)
    63.         return $str;
    64.     //copy all codes to separate array
    65.     $pattern = "/\[code\](.+)\[\/code\]/sU";
    66.     $code_matches = array();
    67.     preg_match_all($pattern, $str, $code_matches, PREG_SET_ORDER);
    68.     //replace all codes in source string with label
    69.     $pattern="/(\s*\[code\].+\[\/code\]\s*)/sU";
    70.     $replacement="<code_link>";
    71.     $str=preg_replace($pattern, $replacement, $str);
    72.     $str = preg_replace("/\s*\<code_link\>\s*/", "<code_link>", $str);
    73.     //colorize each code block
    74.     $codes=array();
    75.     foreach($code_matches as $code_match) {
    76.         $code=$code_match[1];
    77.         $codes[]=my_convert_code($code);
    78.     }
    79.     //format source string without codes
    80.     $str=my_convert_simple_tags_smart($str);
    81.     $str=my_convert_links($str);
    82.     $str=my_convert_tags($str);
    83.     $str=my_convert_email($str);
    84.     $str=my_convert_new_line($str);
    85.     //$str=preg_replace("/(\<\/h3\>\s*<br>)/", "</h3>", $str);
    86.     //$str=preg_replace("/(\s*<br>\s*){3,}/", "<br><br>", $str);
    87.     //insert in formated source string formated codes in place of labels
    88.     foreach($codes as $code) {
    89.         $str=preg_replace("/\<code_link\>/", $code, $str, 1);
    90.     }
    91.     $str=wordwrap($str, 70, ' ', true);
    92.     return $str;
    93. }
    94. ?>
     
  3. eduha

    eduha Активный пользователь

    С нами с:
    8 ноя 2006
    Сообщения:
    278
    Симпатии:
    0
    Адрес:
    Караганда
    дык ведь

    PHP:
    1.  function my_convert_new_line($str)
    2. {
    3.     return nl2br($str);
    4.     //return str_replace("\n", "<br>", $str);
    5. }
    PHP:
    1. $str=my_convert_new_line($str);
     
  4. C

    C Активный пользователь

    С нами с:
    28 май 2006
    Сообщения:
    326
    Симпатии:
    0
    Так чё когда я ввожу \n в ПОЛЕ ВВОДА оно щитается символом перевода строки а не просто знаками \ и n.
     
  5. Davil

    Davil Guest

    Если надо, экранируй slash (\\).