Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр 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$kor5);
    
$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$i5)."<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$i5). "<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$i5). "<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$i5). "<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($msg5"<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$i5). "<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$i5). "<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$i5). "<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 Яндекс.Метрика Яндекс цитирования