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

Форум PHP

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

 

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

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

тема: Разрезать строку по символу *
 
 автор: maDMo3r   (30.12.2004 в 21:51)   письмо автору
 
 

Не знаю как правельно назвать тему ! Назовите пожалуйста за меня!
У меня такая проблема не знаю как мне вывести текс до определенного символа .. Например вот =

4 июня 1888 г конгресс штата Нью-Йорк принял билль об упразднении казни через повешение. Что

послужило причиной для этого гуманного акта?*электрический стул


<?php
$open 
fopen("questions.txt","a+");
if(!
$open)
    {
        echo
"Невозможно отобразить вопросы";
        }
    else 
    {
        
$buff fread($open,10000);
        
$question substr($buff,"*");
        
$answer strstr($buff,"*");
        echo 
"$question";
        echo 
"$answer";
        }
    
fclose($open);
    
?>


Как сделать чтобы выводило текс до * это будет Вопросом , а дальше я разберусь :)

   
 
 автор: cheops   (30.12.2004 в 22:31)   письмо автору
 
   для: maDMo3r   (30.12.2004 в 21:51)
 

Хм... я обычно так substr попалам строку разрезаю:
<?php
  $question 
substr($buff,0,strpos($buff,"*")); 
  
$answer substr($buff,strpos($buff,"*")+1); 
  echo 
"$question<br>"
  echo 
"$answer"
?>

Можно также очень элегантно разбить строку при помощи функции explode :
<?php
  
list($question,$answer) = explode("*",$buff);
  echo 
"$question<br>"
  echo 
"$answer"
?>


http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1006

   
 
 автор: maDMo3r   (30.12.2004 в 22:59)   письмо автору
 
   для: cheops   (30.12.2004 в 22:31)
 

Еще вопрос у меня в questions.txt Есть 2 строчки Как вытащить из 2-ой строчки текст? :)

   
 
 автор: cheops   (30.12.2004 в 23:10)   письмо автору
 
   для: maDMo3r   (30.12.2004 в 22:59)
 

Для этого предназначена функция file http://www.softtime.ru/dic/id_dic=176&id_group=6, которая читает содержимое файла и возвращает его в виде массива, каждый элемент которого соотвествует отдельной строке файла.

   
 
 автор: maDMo3r   (31.12.2004 в 00:26)   письмо автору
 
   для: cheops   (30.12.2004 в 23:10)
 

Можно както сгенерировать randome вопросы? Если да то скажит как :)
Есть такая команда вообще?

   
 
 автор: cheops   (31.12.2004 в 00:54)   письмо автору
 
   для: maDMo3r   (31.12.2004 в 00:26)
 

Да, для этого предназначена функция rand()
int rand ( [int min, int max])
Функция гененрирует случайное целое число между двумя целочисленными параметрами min и max. Если необязательные параметры min и max не указаны число будет расположено между 0 и RAND_MAX(32768). Если версия PHP ниже 4.2.0 для инициализации генератора случайных чисел следует использовать функцию srand(). http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=169
Случайный вывод из файла вашего формата описывается по теме http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=713

   
 
 автор: maDMo3r   (31.12.2004 в 01:50)   письмо автору
 
   для: cheops   (31.12.2004 в 00:54)
 

Хелп не Чеопс помоги ! нужно чтобы выводилось сообщение которое начинается с символа " ' " и заканчивается " * " ! Вот этот код я так и не могу разобраться :(

<?php
  $filename 
"questions.txt";
  
$fd fopen($filename"r");
  
$bufer fread($fd,filesize($filename));
  
fclose($fd);
  
$phrase explode("*",$bufer);
  
$index rand(0,count($phrase)-1);
  echo 
$phrase[$index];
?> 

   
 
 автор: cheops   (31.12.2004 в 13:14)   письмо автору
 
   для: maDMo3r   (31.12.2004 в 01:50)
 

Хм... а задача та же может быть вы выложите хотя бы две записи из текстового файла, чтобы легче было отлаживать...

PS Я и на Хеопс откликаюсь :)))

   
 
 автор: maDMo3r   (31.12.2004 в 15:55)   письмо автору
 
   для: cheops   (31.12.2004 в 13:14)
 

'1801-48), рос. композитор, певец романсов "Вдоль по улице метелица 'метет", "Красный сарафан", "На заре ты ее не буди".?*варламов
'(увелич.) идол (божество)?*идолище
'(уменьш.) комар, насекомое?*комарик
'... - это способ тратить деньги без всякого удовольствия. (Арман 'Салакру)?*экономия
'... - это хорошо загримированное китайское?*японское
'... - это хорошо похудевшее толстое?*тонкое
'... - это хорошо проспавшееся пьяное?*трезвое
'... - это шестое чувство, без которого остальные пять бесполезны. '(Сомерсет Моэм)?*деньги
'... в тумане?*ежик

Вот несколько :) вначале стоит " ' " !

   
 
 автор: cheops   (31.12.2004 в 16:08)   письмо автору
 
   для: maDMo3r   (31.12.2004 в 15:55)
 

А одинарная кавычка идёт всегда вначале? Тогда может её просто вырезать:
<?php
  $filename 
"file_new.txt"
  
// Помещаем строки файла $filename
  // в массив $arr
  
$arr file($filename);
  
// Выбираем случайную позицию в 
  // массиве $arr - $index - это случайный
  // индекс массива $arr
  
$index rand(0,count($arr)-1); 
  
// Разрезаем строку по символу *
  
list($question,$answer) = explode("*",$arr[$index]);
  
// У вопроса удаляем ведущую одинарную кавычку
  
echo substr($question,1)."<br>"
  echo 
"$answer"
?>

   
 
 автор: maDMo3r   (31.12.2004 в 16:21)   письмо автору
 
   для: cheops   (31.12.2004 в 16:08)
 

Окей спасибо :)
P.S не знал просто как читается ник ! :) всетаки сочитание букв ch читается как Ч ! :)

   
 
 автор: cheops   (31.12.2004 в 16:28)   письмо автору
 
   для: maDMo3r   (31.12.2004 в 16:21)
 

Оно по всякому читается и "ч", и "ш" и "х", зависит от слова...

   
 
 автор: maDMo3r   (03.01.2005 в 14:22)   письмо автору
 
   для: cheops   (31.12.2004 в 16:28)
 

Опять проблема :) Хелп
Нужно Разделить вот Такой текст
Подскажите плиз

03.01.2005?maDMo3r*TEST!

   
 
 автор: maDMo3r   (03.01.2005 в 14:38)   письмо автору
 
   для: maDMo3r   (03.01.2005 в 14:22)
 

Извените сам разобрался )
Вот код ....

$date = substr($buff,0,strpos($buff,"?"));
  $news = substr($buff,strpos($buff,"*")+1);
  $name = substr($buff,strpos($buff,"?")+1,substr($buff,"*"));


Спасибо Хеопсу :) Без его примеров не получилось бы ;)

   
 
 автор: maDMo3r   (03.01.2005 в 14:57)   письмо автору
 
   для: maDMo3r   (03.01.2005 в 14:38)
 

Как можно вывести новость ? Вот Например как создается новая новость и создается к ней отдельный файл

$data = date("h.m.s");
    $open = fopen("news/news.".$data,"w");


Как мне открыть этот файл ? :(

   
 
 автор: cheops   (03.01.2005 в 17:14)   письмо автору
 
   для: maDMo3r   (03.01.2005 в 14:57)
 

Хм... а вы просто откройте директорию news и поместите названия всех файлов в массив
<?php
  
// Открываем директорию 
  
$dir opendir("news"); 
  
// В цикле считываем её содержимое 
  
while(($file readdir($dir))) 
  { 
    
// Если текущий объект является файлом - заносим его в массив
    
if(is_file($file)) $news[] = $file
  } 
  
// Закрываем директорию 
  
closedir($dir); 
?>

В результате названия всех файлов директории будут у вас в массиве $news - от сюда и следует плясать...

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=737

   
 
 автор: maDMo3r   (03.01.2005 в 18:00)   письмо автору
 
   для: cheops   (03.01.2005 в 17:14)
 

угу спасибо Подзабыл .. :)

   
 
 автор: maDMo3r   (03.01.2005 в 18:12)   письмо автору
 
   для: maDMo3r   (03.01.2005 в 18:00)
 

хм.. :( у меня не получается вывести может я чтото не так делаю :(
echo "$news[0]";
Так выводить 1-ую строчку ? (О_о)

   
 
 автор: cheops   (03.01.2005 в 18:37)   письмо автору
 
   для: maDMo3r   (03.01.2005 в 18:12)
 

Хм... да почему-то это безобразие не работает :((( Попробуйте пока так:
<?php 
  
// Открываем директорию 
  
$dir opendir("news"); 
  
// В цикле считываем её содержимое 
  
while(($file readdir($dir))) 
  { 
    
// Если текущий объект является файлом - заносим его в массив 
    
if($file != ".." && $file != "."$news[] = $file
  } 
  
// Закрываем директорию 
  
closedir($dir);
  
print_r($news); 
?>

   
 
 автор: maDMo3r   (03.01.2005 в 19:01)   письмо автору
 
   для: cheops   (03.01.2005 в 18:37)
 

а как мне дальше вытаскивать с каждого файла новость ? :)

   
 
 автор: cheops   (03.01.2005 в 19:25)   письмо автору
 
   для: maDMo3r   (03.01.2005 в 19:01)
 

Дальше можно обойти массив в цикле
<?php
  
foreach($news as $new)
  {
     
// Включаем файл
     
include "news/$new";
  }
?>

Ну или открываем каждый файл и подвергаем обработке полученный текст.

   
 
 автор: maDMo3r   (03.01.2005 в 20:03)   письмо автору
 
   для: cheops   (03.01.2005 в 19:25)
 

А какая функция отвечает за вывод текста которое начинается с каждой строки ?:)

   
 
 автор: cheops   (03.01.2005 в 21:37)   письмо автору
 
   для: maDMo3r   (03.01.2005 в 20:03)
 

За это отвечает HTML - следует вывести тэг <br> - имено это переводит в HTML текст на новую строку:
<?php
  
echo "<br>";
?>

Кроме того, в PHP имеется функция заменяющая переводы строк \n на тэг <br> - nl2br()

http://www.softtime.ru/dic/id_dic=35&id_group=1

   
 
 автор: maDMo3r   (03.01.2005 в 22:49)   письмо автору
 
   для: cheops   (03.01.2005 в 21:37)
 

Не хеопс я не это имелл введу :) Как мне например 1-ую строку добавить в масив $date а вторую $name третью в $news ??

   
 
 автор: cheops   (03.01.2005 в 23:27)   письмо автору
 
   для: maDMo3r   (03.01.2005 в 22:49)
 

Хм... эти строки в файлах находятся? Т.е. каждый файл имеет три строчки?

   
 
 автор: maDMo3r   (04.01.2005 в 01:19)   письмо автору
 
   для: cheops   (03.01.2005 в 23:27)
 

В 1-ом файле Строки вот атк рассположены
10.04.05
maDMo3r
ТЕстируем новости !!!!
Во 2-ом тоже самое ! вот атк вообщем :)

   
 
 автор: cheops   (04.01.2005 в 02:09)   письмо автору
 
   для: maDMo3r   (04.01.2005 в 01:19)
 

Тогда вместо
<?php
  
include "news/$new";
?>

следует использовать следующий код
<?php
  
// Открываем файл
  
$fd fopen("news/$new","r");
  
// Читаем его содержимое
  
$bufer fread($fd,"news/$new");
  
// Закрываем файл
  
fclose($fd);
  
// Разбиваем содержимое файла
  
list($date[],$name[],$new[]) = explode("\n",$bufer);
?>

   
 
 автор: maDMo3r   (04.01.2005 в 02:26)   письмо автору
 
   для: cheops   (04.01.2005 в 02:09)
 

<?php
  
// Открываем директорию
  
$dir opendir("news");
  
// В цикле считываем её содержимое
  
while(($file readdir($dir)))
  {
    
// Если текущий объект является файлом - заносим его в массив
    
if($file != ".." && $file != "."$news[] = $file;
  }
  
// Закрываем директорию
  
closedir($dir);

?> 
<?php
  
foreach($news as $new)
  {
  
// Открываем файл
  
$fd fopen("news/$new","r");
  
// Читаем его содержимое
  
$bufer fread($fd,"news/$new");
  
// Закрываем файл
  
fclose($fd);
  
// Разбиваем содержимое файла
  
list($date[],$name[],$new[]) = explode("\n",$bufer);
  }
?> 


Вот весь скрипт но он не работает :( Вот ошибку выдает

Warning: fread() [function.fread]: Length parameter must be greater than 0. in d:\Apach\www\noname\show.php on line 27

Fatal error: [] operator not supported for strings in d:\Apach\www\noname\show.php on line 31

   
 
 автор: cheops   (04.01.2005 в 02:50)   письмо автору
 
   для: maDMo3r   (04.01.2005 в 02:26)
 

Хм... поторопился, исправьте пожалуйста
<?php
 $bufer 
fread($fd,"news/$new");
?>

на
<?php
 $bufer 
fread($fd,filesize("news/$new"));
?>

   
 
 автор: maDMo3r   (04.01.2005 в 09:33)   письмо автору
 
   для: cheops   (04.01.2005 в 02:50)
 

Вот опять какаето ошибка

Fatal error: [] operator not supported for strings in d:\Apach\www\noname\show.php on line 31

   
 
 автор: cheops   (04.01.2005 в 12:39)   письмо автору
 
   для: maDMo3r   (04.01.2005 в 09:33)
 

А... в самом деле совпадают названия... попробуйте последний блок переписать следующим образом:
<?php 
  
foreach($news as $new
  { 
    
// Открываем файл 
    
$fd fopen("news/$new","r"); 
    
// Читаем его содержимое 
    
$bufer fread($fd,filesize("news/$new")); 
    
// Закрываем файл 
    
fclose($fd); 
    
// Разбиваем содержимое файла 
    
list($date[],$name[],$new_arr[]) = explode("\n",$bufer); 
  } 
  
print_r($name);
?>

Т.е. сами новости будут в массиве $new_arr, так как все приличные названия заняты уже под другие переменные.

   
 
 автор: maDMo3r   (04.01.2005 в 12:47)   письмо автору
 
   для: cheops   (04.01.2005 в 12:39)
 

А можно сделать чтобы оно не писало Array ( [0] => и скобки ?

   
 
 автор: maDMo3r   (04.01.2005 в 12:49)   письмо автору
 
   для: maDMo3r   (04.01.2005 в 12:47)
 

Помоему уже проще сделать на Mysql :) и все :)

   
 
 автор: cheops   (04.01.2005 в 13:01)   письмо автору
 
   для: maDMo3r   (04.01.2005 в 12:47)
 

print_r - выдаёт дамп массива, его не следует использовать в реальной работе... далее вывод следует осуществлять в цикле foreach...

PS Если будете что-то спрашивать по этой тебе, заведите, плиз, новую тему, а то это уже слишком длинная... не удобно.

   
 
 автор: maDMo3r   (04.01.2005 в 13:06)   письмо автору
 
   для: cheops   (04.01.2005 в 13:01)
 

Окей мне все ясно уже :)

   
Rambler's Top100
вверх

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