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

Форум PHP

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

 

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

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

тема: Выводить строку по количеству символов...
 
 автор: ZetRider   (10.03.2006 в 22:47)   письмо автору
 
 

Вот существует проблема...
есть строка
12345678901234567890
и мне нежно вывести эту строку так, чтобы на 1 строке было только 5 символов...
Тоесть сама строка выглядит так:
12345678901234567890
а вывести ее нужно так:
12345
67890
12345
67890


чета припоминая функцию wordwrap, или substr но ниче невыходит.. =(

   
 
 автор: JIEXA   (11.03.2006 в 00:12)   письмо автору
 
   для: ZetRider   (10.03.2006 в 22:47)
 

Кроме такого решения, больше ничего в голову не лезет:

<?
$str 
= "12345678901234567890";
$len = intval(strlen($str)/5);
$kor = "0";
$txt = "";
for(
$i=0;$i<$len;$i++)
{
    
$txt .= substr($str, $kor, 5);
    
$txt .= "<br>";
    
$kor += "5";
}
print 
$txt;
?>

   
 
 автор: ck   (11.03.2006 в 00:44)   письмо автору
 
   для: ZetRider   (10.03.2006 в 22:47)
 


$str = "12345678901234567890";
for($i=0; $i<=strlen($str); $i+=5) {
  echo substr($str, $i, 5)."<br />\n";
}

   
 
 автор: ZetRider   (11.03.2006 в 01:01)   письмо автору
 
   для: ck   (11.03.2006 в 00:44)
 

Спасиба, а как совместить код:

<?php
  $arr 
= file("1.txt");
  
$i = 0; 
  foreach(
$arr as $line)
  {
    
$i++; 
    list(
$name, $msg, $time, $ip, $id) = explode(":", $line);
    
$user['name'][]       = $name;
    
$user['msg'][]        = $msg;
    
$user['time'][]       = $time;
    
$user['ip'][]         = $ip;
    
$user['id'][]         = $i;
  }
  for(
$i=count($arr)-1; $i>=0; $i--)
  {
    echo 
"

<br>
<b>"
.$user['name'][$i].":</b> ".bb($user['msg'][$i])."
"
;
  }
?>

Вот с этим:

<?
$str 
= "12345678901234567890"; 
for(
$i=0; $i<=strlen($str); $i+=5) { 
  echo 
substr($str, $i, 5)."<br />\n"; 
}
?>


Как непытался, невыходило...

   
 
 автор: ck   (11.03.2006 в 01:25)   письмо автору
 
   для: ZetRider   (11.03.2006 в 01:01)
 

Хм. Я, честно говоря, не понял - какую строку вам нужно вывести порциями по 5 символов?

И еще - чтобы вывести элементы массива в обратном порядке, необязательно перегонять его целиком дважды. Можно сделать так:

  $arr = file("1.txt");
  krsort($arr);
  foreach ($arr as $row) {
    list($name, $msg, $time, $ip, $id) = explode(":", $row);
    echo "<br /><b>$name :</b>$msg";
  }


Или я что-то не так понял? Тогда простите.

   
 
 автор: ZetRider   (11.03.2006 в 09:21)   письмо автору
 
   для: ck   (11.03.2006 в 01:25)
 

А разбивать нужно строку, которая идет $msg... Логи в файлах зранятся так:
ZetRider:Привет! Как дела?:11.03.06:127.0.0.1:

тоесть msg идет после ника.

   
 
 автор: ZetRider   (11.03.2006 в 09:56)   письмо автору
 
   для: ZetRider   (11.03.2006 в 09:21)
 

Всетаки сделал так:


<?php
  $arr 
= file("1.txt"); 
  
krsort($arr); 
  foreach (
$arr as $row) { 
    list(
$name, $msg, $time, $ip, $id) = explode(":", $row); 

  for(
$i=0; $i<=strlen($msg); $i+=5) { 
  echo 
"<b>$name :</b>" .substr($msg, $i, 5). "<br />\n";
}
  }

?>

   
 
 автор: Drago   (11.03.2006 в 10:07)   письмо автору
 
   для: ZetRider   (11.03.2006 в 09:56)
 

Точку пропустил перед substr.

  echo "<br /><b>$name :</b>" .substr($msg, $i, 5)."<br />\n";

   
 
 автор: ZetRider   (11.03.2006 в 10:34)   письмо автору
 
   для: Drago   (11.03.2006 в 10:07)
 

ага, но всеже)) есть 1 но.
Код:

<?php
  $arr 
= file("1.txt"); 
  
krsort($arr); 
  foreach (
$arr as $row) { 
    list(
$name, $msg, $time, $ip) = explode(":", $row); 

  for(
$i=0; $i<=strlen($msg); $i+=5) { 
  echo 
"<b>$name :</b>" .substr($msg, $i, 5). "<br>";
}
  }

?>


выводит имя:сообщение и если сообщение длинное то он его ризбивает по строкам с интервалом 5 символов, но когда он переносит остальное после 5-ти символов, скрипт думает что ето новое сообщение, и приписывает к нему имя, тоесть если сообщение выглядит так:
1234567890
после обработки скриптом он его разбивает так
12345
67890
Но к каждой новой строке он приписывает
$name 12345
$name 67890
, ну рас ето 1 строка то ненужно чтобы он приписывал к ней $name,..
Как мона етот глюк убрать?

   
 
 автор: JIEXA   (11.03.2006 в 11:14)   письмо автору
 
   для: ZetRider   (11.03.2006 в 10:34)
 

Вот так:

<?php 
  $arr 
= file("1.txt"); 
  
krsort($arr); 
  foreach (
$arr as $row) { 
    list(
$name, $msg, $time, $ip) = explode(":", $row); 
    print  
"<b>$name :</b>";
  for(
$i=0; $i<=strlen($msg); $i+=5) { 
  echo 
substr($msg, $i, 5). "<br>"; 
} 
  } 

?>

   
 
 автор: JIEXA   (11.03.2006 в 11:26)   письмо автору
 
   для: JIEXA   (11.03.2006 в 11:14)
 

Что-то я вчеро видимо был пьян.. Все можно сделать гараздо проще:
<?php 
$arr 
= file("1.txt"); 
krsort($arr); 
foreach (
$arr as $row) 
{ 
    list(
$name, $msg, $time, $ip) = explode(":", $row); 
    print  
"<b>$name :</b>"; 
    
wordwrap($msg, 5, "<br>\n", 1);
} 
?>

   
 
 автор: ZetRider   (11.03.2006 в 11:35)   письмо автору
 
   для: JIEXA   (11.03.2006 в 11:26)
 

не.. тот который раньше был он нормальный...

А вот етот код

<? 
$file
=file("text.txt"); # будем считывать строки с файла text.txt 
$strings="5"; # количество считываемых строк 

    
for($i_str=0;$i_str<$strings;$i_str++) 
   { 
   
$string.=$arr[$i_str]; 
   } 

echo 
$string; 
?>


можна как нить внедрить в:

<?php 
  $arr 
= file("1.txt"); 
  
krsort($arr); 
  foreach (
$arr as $row) { 
    list(
$name, $msg, $time, $ip) = explode(":", $row); 
    print  
"<b>$name :</b>"; 
  for(
$i=0; $i<=strlen($msg); $i+=5) { 
  echo 
substr($msg, $i, 5). "<br>"; 
} 
  } 

?>

   
 
 автор: ZetRider   (11.03.2006 в 14:38)   письмо автору
 
   для: ZetRider   (11.03.2006 в 11:35)
 

Может есть проще код который выводит из файла только первые 5 строк?

   
 
 автор: ck   (13.03.2006 в 01:32)   письмо автору
 
   для: ZetRider   (11.03.2006 в 14:38)
 

Если их нужно вывести в той же последовательности, что в файле, то так:

<?php
$open 
= fopen('1.txt', 'r');
for(
$a=1; $a<=5; $a++) {
  
$row = fgets($open);
  list(
$name, $msg, $time, $ip) = explode(":", $row);
  print  
"<b>$name :</b>";
  for(
$i=0; $i<=strlen($msg); $i+=5) {
    echo 
substr($msg, $i, 5). "<br>";
  }
}
?>

А если в обратной, то:

<?php
$file 
= file('1.txt');
for(
$a=4; $a>=0; $a--) {
  
$row = $file[$a];
  list(
$name, $msg, $time, $ip) = explode(":", $row);
  print  
"<b>$name :</b>";
  for(
$i=0; $i<=strlen($msg); $i+=5) {
    echo 
substr($msg, $i, 5). "<br>";
  }
}
?>

   
 
 автор: ZetRider   (13.03.2006 в 16:52)   письмо автору
 
   для: ck   (13.03.2006 в 01:32)
 

хм.. а он выводит только строки с 1 по 5-ую ((( а после 5-ой строки есть же еще и 6 и 7 и 8....тоесть если выводить по 5 сообщений то он должен уже вывести не с 1 по 5-ую строку а с 4,5,6,7,8...

   
Rambler's Top100
вверх

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