Forum Webscript.Ru
Программирование => PHP => Тема начата: agressor от 07 Июня 2003, 20:46:57
-
Задумка, сделать шаблоны без ООП
Ну написал небольшую программу, но работает не так как нужно: выводит весь цикл одинаковую первую строку, находящуюся в файле, в чем дело:confused:
$data = file ("he.txt"); //файл-база
$temp = file ("he.htm"); //файл-шаблон, содержимое писать не буду, там только теги и три переменных "%....%"
for ($i = 0; $i < sizeof ($data); $i++) {
list ($name, $message, $email) = split (":::", $data[$i]);
for ($n = 0; $n < sizeof ($temp); $n++) {
$temp[$n] = str_replace ("%name%", $name, $temp[$n]);
$temp[$n] = str_replace ("%message%", $message, $temp[$n]);
$temp[$n] = str_replace ("%email%", $email, $temp[$n]);
echo "$temp[$n]";
}
echo "$i
";
}
?>
-
короче, не углубляясь в подробности, скажу просто как исправить:
используй вместо ф-ции file() ф-цию get_file_contents() ...
если интересно почему выводит только первую строку, см. на возвращаемый результат ф-ции file() ;)
-
у меня функцию get_file_contents пхп вообще не поддерживает :-(
-
ставь новую версию!
или юзай так:
$data = join(\'\', file(\'somefile\'));
-
[$data = join(\'\', file(\'somefile\'));
за это руки отрывать надо.
-
agressor:
Задумка, сделать шаблоны без ООП
Есть у меня один знакомый, так он на подобное говорит сразу:
А смысл? не пойму, что лень разобраться, как РНР работает с классами, объектами?
-
RomikChef:
за это руки отрывать надо.
Как вариант :)
$data = readfile(\'file.txt\')
-
Neter
за это надо просто написать echo $data;
-
RomikChef :(
Забыл что readfile сразу выводит содержимое файла и возвращает количество байт..
$filename = "fie.txt";
$fp = fopen ($filename, "r");
$content = fread ($fp, filesize ($filename));
fclose($fp);
-
Neter:
$filename = "fie.txt";
$fp = fopen ($filename, "r");
$content = fread ($fp, filesize ($filename));
fclose($fp);
в зависимости от размера файла этот код может работать в десятки раз быстрее, чем имплод файла.
-
RomikChef:
$data = join(\'\', file(\'somefile\'));
за это руки отрывать надо.
почему?
-
в десятки.
то есть - в двадцмть, тридцать, сорок раз.
то есть, не сорок секунд, к примеру, а одну секунду.
понятно, или все еще нет?
-
Но дело все в том, что что с fread (), что с file(), все равно весь цикл выводится данные из $data[0]...
А при чем здесь join (), как это может помочь?
-
agressor,
$data = file ("he.txt"); //файл-база
$fp = fopen ("he.htm", "r");
$content = fread ($fp, filesize ($filename));
fclose($fp);
for ($i = 0; $i < sizeof ($data); $i++) {
list ($name, $message, $email) = split (":::", $data[$i]);
$temp = str_replace ("%name%", $name, $temp);
$temp = str_replace ("%message%", $message, $temp);
$temp = str_replace ("%email%", $email, $temp);
echo "$temp";
}
echo "$i
";
}
-
Нетер, если я не ошибаюсь, это работать не будет.
надо темп каждый раз присваивать
-
RomikChef, Забыл :)
$data = file ("he.txt"); //файл-база
$fp = fopen ("he.htm", "r");
$content = fread ($fp, filesize ($filename));
fclose($fp);
for ($i = 0; $i <= sizeof($data)-1; $i++) {
list ($name, $message, $email) = split (":::", $data[$i]);
$temp = $content;
$temp = str_replace ("%name%", $name, $temp);
$temp = str_replace ("%message%", $message, $temp);
$temp = str_replace ("%email%", $email, $temp);
echo "$temp";
}
echo "$i
";
}
agressor Всё понял?
-
И это тоже не работает нифуя, побежал разбираться с классами, объектами и методами :-)
-
Вот уж что что - а классы тут ну абсолютно не при чем.
Это все равно, что сделать автомобиль на квадратных колесах, увидеть, что не ездит, плюнуть и начать собирать дизельный движок вместо бензинового.
Ты хоть сам-то понимаешь, что объект - это всего лишь форма представления, а код в нем, внутри, ТОЧНО ТАКОЙ же будет?
-
вот что мне нравится в таких людях - непосредственность.
прибежал. повякал что-то невразумительное, напряг людей, чтобы они за него код написали, снова прибежал, вякнул, что не работает, побежал дальше.
Зачем приходил? Зачем писал?
Зачем на форуме вопрос задавал, который даже сам понять толком не может?
Нет ответа.
-
Но вообще, да.
Вы, ребята, или вообще готовый код не пишите, а тыкайте носом в ошибки пока или не найдет, или нос не расквасит, или пишите без ошибок.
В принципе, я был бы на стороне этого томского самородка, если бы не его последнее заявление, показывающее фантастическое скудоумие.
И, боюсь, медицина здесь бессильна.
-
Это нервы :)
RomikChef:
или пишите без ошибок.
Всмысле? Где ошибки-то? Я Только чуть-чуть его код поменял..
Пусть сам разбирается..
-
поменял, да с ошибками.
вот поэтому и нервы, что и вопрос задает дурачок, и ответы ему дают - ни одного без ошибок нету
-
RomikChef Виноват, исправлюсь :)
-
работает
проверено ;-)
$data = file ("he.txt");
$fp = fopen ("he.htm", "r");
$content = fread ($fp, filesize ("he.htm"));
fclose($fp);
for ($i = 0; $i <= sizeof($data)-1; $i++) {
list ($name, $message, $email) = explode (":::", $data[$i]);
$temp = $content;
$temp = str_replace ("%name%", $name, $temp);
$temp = str_replace ("%message%", $message, $temp);
$temp = str_replace ("%email%", $email, $temp);
echo $temp;
echo "$i
";
}
-
RomikChef :)
-
а ещё str_replace массивы может поглощать...
тогда ненадо будет морочиться с 1000000-чами str_replace-ов =)
-
Обосрали в конец и все из-за того, что я забрел в форум, не зная что такое объект???
-
Да перестень ты молиться на объекты.
Они у тебя перед глазами, как мальчики кровавые.
Ты вообще о чем-нибудь, кроме них говорить в состоянии?
Не нужны здесь объекты.
Не нужны тебе лично объекты.
Без объектов прикрасно обходтся миллионы программистов и сотни языков.
Никто тебе худого слова за незнание объектов не говорил.
Я тебе сказал только, что проблема тыоя не в объектах, а в ДНК.
Вот на это можешь обижаться.
Все из-за того, что ты НЕ ЗНАЯ, начинаешь делать выводы, ни у кого не спросив - а правильные ли они.
тьфу.
еще и сопли вытирать пришлось