Спустя 5 минут, 13 секунд (30.04.2010 - 15:55) phz написал(а):
Используй file http://php.net/manual/en/function.file.php
Получишь массив. а потом уже делай что хочешь
Вот прсотой пример, если я правильно понял:
Получишь массив. а потом уже делай что хочешь
Вот прсотой пример, если я правильно понял:
$lines = file('./text.txt');
//print_r($lines);
echo "<h1>".$lines["0"]."</h1>";
echo $lines["1"];
Спустя 21 час, 42 минуты, 9 секунд (1.05.2010 - 13:37) MatrixGod написал(а):
можно еще проще:
<?
$arr = file('text.txt');
foreach($arr as $str)
{
$str = "<h1>$str</h1>";
}
?>
Спустя 3 минуты, 11 секунд (1.05.2010 - 13:40) waldicom написал(а):
Цитата (MatrixGod @ 1.05.2010 - 12:37) |
можно еще проще:<? |
Это нисколько не проще и к тому же не решает проблема автора топика...
Спустя 29 минут, 20 секунд (1.05.2010 - 14:10) krasilich написал(а):
Цитата (waldicom @ 1.05.2010 - 12:40) | ||
Это нисколько не проще и к тому же не решает проблема автора топика... |
<?
$arr = file('text.txt');
foreach($arr as $str)
{
$str = "<h1>$str</h1>";
break;
}
?>
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 9 минут, 17 секунд (1.05.2010 - 14:19) MatrixGod написал(а):
сорри, лохонулся, ему первая строка нужна, а мне показалось все...
Спустя 2 часа, 15 минут, 21 секунда (1.05.2010 - 16:34) Han написал(а):
Цитата (MatrixGod @ 1.05.2010 - 11:19) |
сорри, лохонулся, ему первая строка нужна, а мне показалось все... |
Следую логики запустить массив присвоить переменной измененную строку и потом вывести её будет не проще, чем просто вывести строку.
Спустя 1 час, 28 минут, 57 секунд (1.05.2010 - 18:03) Nikitian написал(а):
$f=file('file.txt');
$f[0]='<h1>'.$f[0].'</h1>';
echo implode($f);
Спустя 2 часа, 8 минут, 11 секунд (1.05.2010 - 20:12) KaFe написал(а):
<?php
$file= file('./text.txt');
echo "<h1>".$file[0]."</h1>";
?>
100% оптимизировал код
Спустя 23 минуты, 15 секунд (1.05.2010 - 20:35) waldicom написал(а):
Цитата (KaFe @ 1.05.2010 - 19:12) |
<?php 100% оптимизировал код |
Тююю... Разве же это 100% ?
Тут на форуме была ветка, вот та и правда оптимизировали так, что реально заоптимизировали...
Спустя 3 дня, 3 часа, 6 минут, 10 секунд (4.05.2010 - 23:41) KaFe написал(а):
waldicom а у тебя есть другой вариант, как сделать код менее нагрузочным??
Спустя 25 минут, 37 секунд (5.05.2010 - 00:07) twin написал(а):
KaFe
Цитата |
waldicom а у тебя есть другой вариант, как сделать код менее нагрузочным?? |
$f = fopen('./text.txt', 'r');если знать длину строки, хотя бы примерно, можно еще больше разгрузить.
echo "<h1>".fgets($f)."</h1>";
fclose($f);
Спустя 19 минут, 25 секунд (5.05.2010 - 00:26) zarafar написал(а):
Файл test.txt
Файл test.php
А что тут у нас !"№;%:?*(+_)(*?:%;№"!Ё!"№;%:?*( \r\n .'
А это вторая строчка, она нам не нужна
Тяжело быть третьей никому не нужной
Если бы я был поэтом я бы написал омлетом
Файл test.php
<?php
$firstStr = '';
$src = 'test.txt';
if (file_exists($src)){
$handle = fopen($src, 'r');
while(!feof($handle)){
$buffer = fgets($handle, 2);
$firstStr .= $buffer;
if (mb_strpos($firstStr, PHP_EOL)) break;
}
echo 'Первая строчка появись: <b><h1>' . $firstStr . '</h1></b>'; # требуемый <h1>Привет</h1>
} else {
echo 'Файл не существует';
}
?>
![ph34r.gif](http://phpforum.ru/html/emoticons/ph34r.gif)
Спустя 39 минут, 41 секунда (5.05.2010 - 01:06) twin написал(а):
О как... Это зачем стока букаф? Зачем гнать цикл и искать конец строки, когда fgets и сама это прекрасно умеет...
В этом есть смысл только если использовать fread, но для этого нужно хотя бы примерно знать длину строки. Я писал уже.
В этом есть смысл только если использовать fread, но для этого нужно хотя бы примерно знать длину строки. Я писал уже.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 47 минут, 8 секунд (5.05.2010 - 01:53) KaFe написал(а):
twin давай сравним
Твой пример
Кол-во функций, а как ты знаешь для выполнения функций нужны ресурсы и так считаем кол-во функций.
1.fopen
2.echo
3.fgets
4.fclose
Мой пример
1.file
2.echo
С любой точки зрения, мой пример самый подходящий и наиболее оптимизированный для данной операции.
Мы же программисты, мы не должны соревноваться кто каверзнее функцию использует, мы должны сделать все проще, более производительно и т.п
Твой пример
$f = fopen('./text.txt', 'r');
echo "<h1>".fgets($f)."</h1>";
fclose($f);
Кол-во функций, а как ты знаешь для выполнения функций нужны ресурсы и так считаем кол-во функций.
1.fopen
2.echo
3.fgets
4.fclose
Мой пример
$file= file('./text.txt');
echo "<h1>".$file[0]."</h1>";
1.file
2.echo
С любой точки зрения, мой пример самый подходящий и наиболее оптимизированный для данной операции.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 6 минут, 47 секунд (5.05.2010 - 02:00) zarafar написал(а):
Цитата (twin @ 4.05.2010 - 22:06) |
Зачем гнать цикл и искать конец строки, когда fgets и сама это прекрасно умеет... |
Цитата |
С версии PHP 4.3, отсутствие параметра length будет приводить к чтению потока до конца строки. |
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Будет мне уроком, теперь буду в первую очередь, обращаться к оригинальным докам.
![rolleyes.gif](http://phpforum.ru/html/emoticons/rolleyes.gif)
Спустя 5 минут, 36 секунд (5.05.2010 - 02:05) zarafar написал(а):
Цитата (KaFe @ 4.05.2010 - 22:53) |
Мой пример$file= file('./text.txt'); 1.file 2.echo С любой точки зрения, мой пример самый подходящий и наиболее оптимизированный для данной операции. ![]() |
Вы не совсем правильно себе представляете. Функция file() загнется на большом файле.
Спустя 8 часов, 1 минута, 56 секунд (5.05.2010 - 10:07) twin написал(а):
KaFe
Цитата |
С любой точки зрения, мой пример самый подходящий и наиболее оптимизированный для данной операции. Мы же программисты, мы не должны соревноваться кто каверзнее функцию использует, мы должны сделать все проще, более производительно и т.п |
Это поверхностные рассуждения. От непонимания процессов.
Ошибка в том, что функция file() считывает в оперативную память весь файл, хотя нужна всего одна строка. А это более чем расточительно, особенно если файл большой.
Кроме того, сама по себе эта функция уже содержит операции, выполняемые fopen() и fclose(). И хотя они работают на уровне ядра, без интерпретатора, большого прироста производительности не будет.
Плюс к этому формируется массив, и потом из него извлекается элемент. Что тоже дополнительные операции, хотя в листинге кажется, что их вроде как нет.
Так что по количеству операций получается тоже самое
1.fopen
2.echo
3.fgets
4.fclose
1. file
2. Формируем массив
3. Вынимаем значение
4.echo
а по расходу оперативной памяти и времени - огромнейший минус.
Так что не все то золото, что блестит.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)