[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Oфрмление первой строки
mixxa
Привет! Допустим есть файл - условно назовем text.txt. В нем n строк. Нужно чтобы скрипт брал первую строку и с обеих сторон добавлял <h1>. То есть в файле первая строка "Привет", а скрипт выводит <h1>Привет</h1>. Есть идеи? С началом строки все нормално, а вот с концом возникают проблемы. Спасибо.



Спустя 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)
можно еще проще:

<?

$arr = file('text.txt');

foreach($arr as $str)
{
$str = "<h1>$str</h1>";
}

?>

Это нисколько не проще и к тому же не решает проблема автора топика...

Спустя 29 минут, 20 секунд (1.05.2010 - 14:10) krasilich написал(а):
Цитата (waldicom @ 1.05.2010 - 12:40)
Цитата (MatrixGod @ 1.05.2010 - 12:37)
можно еще проще:

<?

$arr = file('text.txt');

foreach($arr as $str)
{
$str = "<h1>$str</h1>";
}

?>

Это нисколько не проще и к тому же не решает проблема автора топика...

<?

$arr = file('text.txt');

foreach($arr as $str)
{
$str = "<h1>$str</h1>";
break;
}

?>


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 
$file= file('./text.txt');
echo "<h1>".$file[0]."</h1>";
?>

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
А что тут у нас  !"№;%:?*(+_)(*?:%;№"!Ё!"№;%:?*( \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

Спустя 39 минут, 41 секунда (5.05.2010 - 01:06) twin написал(а):
О как... Это зачем стока букаф? Зачем гнать цикл и искать конец строки, когда fgets и сама это прекрасно умеет...
В этом есть смысл только если использовать fread, но для этого нужно хотя бы примерно знать длину строки. Я писал уже. smile.gif

Спустя 47 минут, 8 секунд (5.05.2010 - 01:53) KaFe написал(а):
twin давай сравним

Твой пример
$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 Мы же программисты, мы не должны соревноваться кто каверзнее функцию использует, мы должны сделать все проще, более производительно и т.п

Спустя 6 минут, 47 секунд (5.05.2010 - 02:00) zarafar написал(а):
Цитата (twin @ 4.05.2010 - 22:06)
Зачем гнать цикл и искать конец строки, когда fgets и сама это прекрасно умеет...

Цитата
С версии PHP 4.3, отсутствие параметра length  будет приводить к чтению потока до конца строки.

smile.gif Сначала обратился к устаревшей версии мана, переводов которого на русский много, но они не обновляются. Вы конечно правы.

Будет мне уроком, теперь буду в первую очередь, обращаться к оригинальным докам. rolleyes.gif

Спустя 5 минут, 36 секунд (5.05.2010 - 02:05) zarafar написал(а):
Цитата (KaFe @ 4.05.2010 - 22:53)
Мой пример
$file= file('./text.txt');
echo "<h1>".$file[0]."</h1>";

1.file
2.echo

С любой точки зрения, мой пример самый подходящий и наиболее оптимизированный для данной операции.  smile.gif Мы же программисты, мы не должны соревноваться кто каверзнее функцию использует, мы должны  сделать все проще, более производительно и т.п


Вы не совсем правильно себе представляете. Функция 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
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.