За последние 24 часа нас посетили 17416 программистов и 1712 роботов. Сейчас ищут 1743 программиста ...

Перенос строки

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

  1. _Flash_

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

    С нами с:
    22 июн 2006
    Сообщения:
    19
    Симпатии:
    0
    Люди.. вот такая проблемка..
    кароч.. \n - это я так понимаю перенос строки.. а у меня почему то это простой пробел.. В чем дело??
     
  2. alemiks

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

    С нами с:
    22 июн 2006
    Сообщения:
    29
    Симпатии:
    0
    Адрес:
    Voronezh - Novgorod the Great
    где пробел ?
     
  3. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Могу предположить, что в HTML. Если да, то читать мануал на предмет переноса строк в нем.
     
  4. _Flash_

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

    С нами с:
    22 июн 2006
    Сообщения:
    19
    Симпатии:
    0
    пробел в php. пример:

    echo "text\ntext"; // выводит text text

    а я так понимаю что должно вывести
    text
    text
     
  5. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    _Flash_, ты неправильно понимаешь. Ты смотришь в браузере, а он обрабатывает текст, как html, а там переносы строк делаются по другому.
    Если ты посмотришь "Исходный html-код страницы", то там все будет нормально, т.е. php отработал, как надо.
    Учить основы html.
    Так же — http://www.phpfaq.ru/na_tanke
     
  6. olo

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

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    Выводит-то куда??!
     
  7. Grenouer

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

    С нами с:
    23 июн 2006
    Сообщения:
    41
    Симпатии:
    0
    Короче если хочешь сделать перенос, то тебе надо сделать так:

    PHP:
    1.  
    2. <?php
    3. echo "text<BR>text";
    4. ?>
    5.  
    тогда выведет:
    text
    text

    html-файл у тебя будет выглядеть

    text<br>text

    если написать вот так

    PHP:
    1.  
    2. <?php
    3. echo "text\ntext";
    4. ?>
    5.  
    выведет text text

    а html-файл будет

    text
    text
     
  8. _Flash_

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

    С нами с:
    22 июн 2006
    Сообщения:
    19
    Симпатии:
    0
    Да знаю я хтмл.. и знаю я что <br> это перенос строки.
    Просто в учебниках по php написано, что \n - это перенос строки в php. Вот я и подумал, что вместо <br> можно использовать \n. Да и в примерак также.
    зачем тогда вообще придуман был \n - если можно просто ставить пробел?
     
  9. olo

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

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
  10. Grenouer

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

    С нами с:
    23 июн 2006
    Сообщения:
    41
    Симпатии:
    0
    \n - для переноса строки в html-файле.

    А пробел у тебя получается потому что это особенность html.

    Например если написать:

    <tr>
    <td>
    TEXTTEXTTEXT
    </td>
    </tr>

    То у после фразы TEXTTEXTTEXT в конце будет стоять пробел

    А если написать:

    <tr><td>TEXTTEXTTEXT</td></tr>, то пробел стоять не будет.

    В общем если после какой-то фразы перенести строку, то в конце будет стоять пробел, если нет то пробел не ставится. Тоже самое в случае с \n
     
  11. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    _Flash_, ты просто не в теме, разберись, что такое html и что такое php и чем они отличаются.
     
  12. _Flash_

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

    С нами с:
    22 июн 2006
    Сообщения:
    19
    Симпатии:
    0
    Блин.. терь ясно.... Просто я не думал, что как-то будет изменяться html-код. да и смысла особого я в этом не вижу
    Я отлично понимаю что это такое и чем они отличаются...
     
  13. andykey

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

    С нами с:
    17 авг 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Красноярск
    Граждане подскажите а как этот "\n" на лету заменить например на "<br>"
     
  14. Raa

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

    С нами с:
    28 июл 2006
    Сообщения:
    209
    Симпатии:
    0
    Заметно. Как по мне, так ты все на свете спутал. Люди правы. Учи HTML, учи PHP, все учи, в общем :) Если у тебя дойдут руки до мануала по HTML, то ты прочитаешь там, что любая последовательность пробельных символов (пробел, таб, перенос строки) преобразуется браузером в ОДИН ПРОБЕЛ. Нужно понимать и чувствовать разницу, между исходным кодом HTML и отображаемой HTML-сраницей. Что касается "\n", который, по-твоему, абсолютно бесполезный, то у него свои функции. Во-первых, ты можешь писать на PHP не только динамические страницы, но и консольные приложения. Если тебе понадобится перевести строку в консоли, то тебе прийдется писать "\n", потому что там текст выводится как есть, и если ты выведешь "<br>", то на экране так и будет написано "<br>". Во-вторых, иногда бывает нужно разобраться в исходном коде HTML, который генерирует твой скрипт. Если ты делаешь вывод с одними br-ами, то открыв исходный код страницы, обнаружишь, что все написано в одну строчку, потому что в исходном коде как раз и нету символа новой строки "\n". И в-третьих, в конце концов, стандартный поток вывода - это далеко не единственное место, где могут всретиться переносы строк. Возьми для пирмера хотя бы обработку обычного многострочного текстового файла. Кстати, на всяк случай замечу, что "\n" - это не два символа (косая и буква n), а способ обозначить в строке один символ, имеющий свой собственный код, но не имеющий графического представления.

    На лету чего? Если ты контролируешь полет, то сделай вот так:

    $out = str_replace("\n", '<br>', $out);

    А если не контролируешь, то для того, чтобы сделать такую замену, тебе сначала нужно будет перехватить поток. Тогда можно воспользоваться функциями управлениями выводом:

    PHP:
    1.  
    2. <?php
    3. // Включаем буферизацию
    4.  
    5. // Выполняем задуманное
    6. echo "Hello World";
    7.  
    8. // Получаем содержимое буфера и очищаем его
    9. $out = ob_get_clean();
    10. // Отключаем буферизацию
    11. // Делаем преобразование над перехваченным текстом
    12. $out = str_replace("\n", '<br>', $out);
    13. // Выводим преобразованный текст
    14. echo($out);
    15. ?>
    16.  
     
  15. Петр

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

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
  16. andykey

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

    С нами с:
    17 авг 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Красноярск
    Пробовал только что почемуто не работает ни тот ни другой способ.
    мож в самом пхп что то отключено?
     
  17. vb

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

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    ....может тему в Trash?

    з.ы.
    А кто то говорил что не пишет такого :))))
     
  18. andykey

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

    С нами с:
    17 авг 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Красноярск
    вариант 1
    $this->out_text=str_replace( "\r\n" , "<br>" , $this->out_text);

    вариант 2
    $this->out_text=nl2br($this->out_text);

    И не один почему то не сработал

    я близок к самоубийству :(
     
  19. andykey

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

    С нами с:
    17 авг 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Красноярск
    Ура разобрался :)

    Жизнь спасена :)
     
  20. Петр

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

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
    В чем была ошибка?
    Покажи следующим поколениям.
     
  21. andykey

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

    С нами с:
    17 авг 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Красноярск
    Ошибка к сожелению в невнимательности.
     
  22. andykey

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

    С нами с:
    17 авг 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Красноярск
    Но есть еще одна проблема
    Скрипт отрабатывает так как мне нужно, результаты выводятся.
    Но перед результатами выводится сообщение об ошибке:
    Warning: strpos(): Offset not contained in string. in s:\home\hosts\gazeta-pr\www\req\out.class on line 348

    В этой строке у меня:
    $this->out_text=substr("$this->out_text", 0, strpos($this->out_text, ".", 200));

    Кто подскажет где искать
     
  23. andykey

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

    С нами с:
    17 авг 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Красноярск
    Вот что еще интересно с некоторыми текстами работает без ошибок, а с некоторыми выдает ошибку.

    Если я правильно понимаю сообщение об ошибке функция не может найти точку в том куске текста который я пихаю в эту функцию
     
  24. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Правильно понимаешь :)
     
  25. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    е-мое, уже написал сообщение что зделать, а затем нажал Ф5 :)

    делай так:
    Код (Text):
    1.  
    2.   $pos = strpos($this->out_text,'.',200);
    3.   if ($pos) {$this->out_text=substr($this->out_text,0,$pos)}