Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не понятки при разбивании строки
 
 автор: TetRiska   (09.12.2008 в 23:21)   письмо автору
 
 

Всем привет. Я не пойму почему не работает таким макаром:
<? 
do
        {    
        
$text $myrow3["text"]; //в майров содержится массив строк длинной <> 100
        
$newtext wordwrap($text20"<br />\n");
        echo 
"<div class='post_div'><p class='post_comment_add'>Комментарий добавил(а): <strong>$myrow3[author]</strong><br> Дата: <strong>$myrow3[date_p]</strong><br><br>$newtext<br><br><samp>IP адресс: <strong>$myrow3[ip_com]</strong></samp></p></div>";
        }
        while(
$myrow3 mysql_fetch_array($result3));
        }
?>


А если ввести:

<? 
do
        {    
        
$text "ывавыаываывакеррапреговоапоквотавов аркеррвкер вп пвап вапавпвап";
        
$newtext wordwrap($text20"<br />\n");
        echo 
"<div class='post_div'><p class='post_comment_add'>Комментарий добавил(а): <strong>$myrow3[author]</strong><br> Дата: <strong>$myrow3[date_p]</strong><br><br>$newtext<br><br><samp>IP адресс: <strong>$myrow3[ip_com]</strong></samp></p></div>";
        }
        while(
$myrow3 mysql_fetch_array($result3));
        }
?>


Отработает нормально, расставит абзацы там где надо.
Бок из-за массива? Как быть тогда с ним?
И еще как бы поставить в начале первой строки отступ?
     тест тесттесттест тест
тесттесттесттест
тесттесттесттесттест

  Ответить  
 
 автор: TetRiska   (10.12.2008 в 00:34)   письмо автору
 
   для: TetRiska   (09.12.2008 в 23:21)
 

Есть желающие растолковать мне в чем дело?

  Ответить  
 
 автор: cheops   (10.12.2008 в 14:23)   письмо автору
 
   для: TetRiska   (09.12.2008 в 23:21)
 

1) Какова структура массива $myrow3?
echo "<pre>";
print_r($myrow3);
echo "</pre>";

2) Самый простой способ добавить отступы в первой строки - разместить последовательность неразрывных пробелов &nbsp;

  Ответить  
 
 автор: sim5   (10.12.2008 в 14:38)   письмо автору
 
   для: cheops   (10.12.2008 в 14:23)
 

Зачем &nbsp;, есть ведь text-indent для CSS.

  Ответить  
 
 автор: TetRiska   (10.12.2008 в 17:10)   письмо автору
 
   для: sim5   (10.12.2008 в 14:38)
 

Можно поподробней про использование text-indent Может создать стиль и потом считывать первую строку длинной 100 символов и добавлять этот стиль? А после уже разбивать по абзацам?

  Ответить  
 
 автор: sim5   (10.12.2008 в 17:27)   письмо автору
 
   для: TetRiska   (10.12.2008 в 17:10)
 

text-indent
wordwrap() не разбивает строку по абзацам, он делает перенос строки на данное количество символов с использованием символа разрыва строки. А абзац - это текст единый по смыслу. Абзац оформляется отступом или пробельной строкой или выделением первой буквы и т.д.

  Ответить  
 
 автор: TetRiska   (10.12.2008 в 17:41)   письмо автору
 
   для: sim5   (10.12.2008 в 17:27)
 

Тоесть мне нужно заключить весь текст в тег <p></p> (стиль имеется) и расставить <br> в нужные места??Теперь остается это реализовать...

  Ответить  
 
 автор: sim5   (10.12.2008 в 18:15)   письмо автору
 
   для: TetRiska   (10.12.2008 в 17:41)
 

Вот этого я не знаю, можете в тег прагарафа поместить текст, указав ему в стилях text-indent, и разбить строки, а можете в дргой html тег... вам виднее, мне откуда знать чего и зачем вы разбить хотите.

  Ответить  
 
 автор: TetRiska   (10.12.2008 в 19:35)   письмо автору
 
   для: sim5   (10.12.2008 в 18:15)
 

http://cinema-art.od.ua/view_full.php?id=12 вот мож наглядно посмотреть))) введи текст в комментарий большой длинны...при этом не нажимая Ентер..выведет все в ряд...а хотелось бы что ставило параграф в начале первой строки и разбивало (ставило перенос) по достижении к примеру 100 символов.

  Ответить  
 
 автор: sim5   (10.12.2008 в 20:06)   письмо автору
 
   для: TetRiska   (10.12.2008 в 19:35)
 

На HTML странице, браузер текст в параграфе никак не выведет одной строкой, если вы только этого сами не захотите, и все ENTER просто проигнорирует. Это первое. Второе, если вы будете надеться на мою "честность", то да, можете при получении формы разбить как-то на что-то вам нужное, но я ведь могу и просто оооочень длинную строку ввести без всяких ENTER, как тогда?

  Ответить  
 
 автор: TetRiska   (10.12.2008 в 20:24)   письмо автору
 
   для: sim5   (10.12.2008 в 20:06)
 

Всмысле наедятся на честность? Пользователь не должен замарачиватся и жать Ентер или вводить в текстареа спец символы...Он просто вводит текст, любой величины. Лишь при выводе надо красиво оформить, чтобы не выходило за пределы..Разве не так?

  Ответить  
 
 автор: sim5   (10.12.2008 в 20:32)   письмо автору
 
   для: TetRiska   (10.12.2008 в 20:24)
 

И что вы от меня хотите? Если ваш скрипт лучше меня знает где начинается и заканчивается моя мысль, то ради бога, разбивайте как хотите, вот только стоит ли? Вы этот мой пост попробуйте разбить на ХХ строк, что-то я сомневаюсь чтобы он от этого стал "красивше".

  Ответить  
 
 автор: TetRiska   (11.12.2008 в 21:58)   письмо автору
 
   для: sim5   (10.12.2008 в 20:32)
 

Вот что хотелось получить:

<?php
$result3 
mysql_query ("SELECT * FROM comments WHERE post='$id' LIMIT $start$num",$db);
if (@
mysql_num_rows($result3) > 0)
{
while(
$myrow3 mysql_fetch_array($result3))
{
    
//$array_whitespace = array("\r\n", "\n\r", "\n", "\r");
    
$text str_replace("\r""<br>"$myrow3['text']);
   
// $text = str_replace("\t", "&nbsp;&nbsp;", $text);
?>
    <div class='post_div'>
         <p class='post_comment_add'>Комментарий добавил(а): 
             <strong><?php echo $myrow3['author'];?></strong>
             <br> Дата: <strong><?php echo $myrow3['date_p'];?></strong>
             <br><br><?php echo wordwrap($text261); ?><br><br>
             <samp>IP адресс: <strong><?php echo $myrow3['ip_com'];?></strong></samp>
         </p>
    </div>
<?php } } ?>


Разбивает текст при выводе по абзацам..Но хотелось бы еще увидить чтоб каждый абзац имел отступ...И как можно разбить строку без пробелов? Тоесть сплошной текст?

  Ответить  
 
 автор: sim5   (11.12.2008 в 23:27)   письмо автору
 
   для: TetRiska   (11.12.2008 в 21:58)
 

Это не разбивка текста, а вывод отдельных строк через... Что касается разбивки комментария, то я бы просто все оформил соответствующе, и автора, и дату, и прочее, и ничего бы не надо было разбивать. А коли охота разбить и абзац, то помещайте его в элемент, которому добавляйте отступ.

  Ответить  
 
 автор: TetRiska   (12.12.2008 в 17:57)   письмо автору
 
   для: sim5   (11.12.2008 в 23:27)
 

Можешь привести свой пример? Вот что я сделал, чтобы абзацы выделяло:

$text = str_replace("\r", "<br>&nbsp;&nbsp;&nbsp;", "&nbsp;&nbsp;&nbsp;".$myrow3['text']);


Остается разбивать строку без пробелов, а то текст при таком отображении выводится за пределы страницы :(

  Ответить  
 
 автор: sim5   (12.12.2008 в 20:26)   письмо автору
 
   для: TetRiska   (12.12.2008 в 17:57)
 

Мне начинает казаться, что все ваши попытки "расколотить" текст, это следствие результата того, что вы одно принимаете за другое. По ссылке, которую вы приводили, текст в параграфе отображается "ровненько" по краям. Вы это принимаете как результат разбивки текста? Если да, то вы ошибаетесь, не надо ни чего "расколачивать", для этого достаточно указать стиль - text-align: justify;
Пример чего вам привести?

  Ответить  
 
 автор: TetRiska   (13.12.2008 в 15:25)   письмо автору
 
   для: sim5   (12.12.2008 в 20:26)
 

Если вы о ссылке что я на сайт давал, то тогда могу сказать, что я еще там не менял нечего :) Тестирую дома.. Сейчас текст нормально разбивается, есть лишь 1 нюанс, когда пользователь вводит много символов подряд без пробелов, вот тогда плохо...Над этим вопросом еще мучаюсь и задал его в разделе по Яве.

  Ответить  
 
 автор: TetRiska   (10.12.2008 в 17:07)   письмо автору
 
   для: cheops   (10.12.2008 в 14:23)
 

Если этот код вставить в тело цикла после do { ,то перед каждой заметкой выведется содержимое массива:

Array
(
    [0] => 2
    [id] => 2
    [1] => 12
    [post] => 12
    [2] => gvg
    [author] => gvg
    [3] => ggggggggggggggggggggggggg
    [text] => ggggggggggggggggggggggggg
    [4] => 2008-12-10 16:02:03
    [date_p] => 2008-12-10 16:02:03
    [5] => 127.0.0.1
    [ip_com] => 127.0.0.1
)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования