Вывод текста из файла .txt на страницу HTML

Статус
Закрыто для дальнейших ответов.

nataly

Member
Регистрация
03.04.2010
Сообщения
22
Подскажите пожалуйста, как можно вывести текст (одна строка длиной в 10 символов) из файла .txt на страницу HTML? <iframe дает хороший результат, но шрифт выводимого текста неуправляем никакими стилями, а надо изменить цвет. Может быть, есть другие варианты вывода - например, с помщью скриптов типа document.open? Пробовала с помощью тега <object - вообще неуправляемый вариант. А нужно обязательно задать цвет шрифта. Если изменить фон шрифта в теге <iframe, то это не работает в обозревателе IE. Как быть?
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Мне кажется нужно смотреть выше и решать проблему глобальнее. Зачем обязательно тхт?
Это во первых, а во вторых, если используется php то можно написать echo file_get_contents('myfile.txt');
Если нет то думаю придется использовать JS и подгружать все через скрипты, к сожалению не могу посоветовать другого варианта кроме как jQuery ajax. Но мне кажется это самый простой выход
 

fantasy4fun

лдж в php
Регистрация
16.08.2009
Сообщения
136
Если используется php, то можно сделать так:

Код:
<?php $textfile = "http://адрес сайта/имя файла.txt"; //путь к файлу

if ($quotes = @file("$textfile")) {$quote = rand(0, sizeof($quotes)-1);

echo $quotes[$quote]; //вывод рандомного текста

}else{echo ("Нет рандомного контента");} //вывод сообщения, если файл не найден 
?>
буквально два дня назад мне было это нужно, нашел данный код, проверил, всё работает.
 

nataly

Member
Регистрация
03.04.2010
Сообщения
22
Спасибо за столь быстрый ответ. Во-первых, txt обязательно, так как он формируется в фортране другим софтом. Во-вторых, вариант с JS тоже интересенб но не знаю, каким образом открыть файл в JS?
Мне кажется нужно смотреть выше и решать проблему глобальнее. Зачем обязательно тхт?
Это во первых, а во вторых, если используется php то можно написать echo file_get_contents('myfile.txt');
Если нет то думаю придется использовать JS и подгружать все через скрипты, к сожалению не могу посоветовать другого варианта кроме как jQuery ajax. Но мне кажется это самый простой выход
А jQuery ajax обязательно посмотрю, пока не знаю, что єто.
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
каким образом открыть файл в JS?
Никаким образом открыть файл в js невозможно. Можно получить веб страницу целиком от сервера (document.location.href = ...) или что-то (текст, XML, ...) от скрипта - обработчика XMLHTTPRequest - запроса (это так называемый Аякс).

Если Вам нужно просто вставить в страницу целиком содержимое всего txt файла, напишите, как подсказал kein:
Код:
<div id="some_id">
    <?php echo file_get_contents('myfile.txt') ?>
</div>
и используя стили для #some_id - разместите и украсьте Ваш текстовый файл как угодно.

Если в txt файле несколько страниц и Вам нужно вывести одну случайную - замечательное решение предложил Вам fantasy4fun.

А вот если выводимая информация должна меняться в ответ на какие-либо действия пользователя - то тогда уже добро пожаловать в Аякс. Подробнее - по запросу. И так пост здоровенный получился.
Удачи!
 

weabdizain

New Member
Регистрация
01.04.2010
Сообщения
7
Можно сделать проще:
Для документа HTML сделать так:

Код:
<?php
$file='myfile.txt';
include($file);
?>
 

Dador

Member
Регистрация
04.04.2010
Сообщения
11
Можно через PHP + CSS
Пример:
Код:
<!--Тут сами стили-->
<style type="text/css">
.textblock {
/*Тут уже вставляешь все что нужно, разберешься*/
color: red;
}
</style>
<?php
//путь к файлу
$filename='text.txt';
//Загружаем файл
$file=file_get_contents($filename);
//Выводим блок со стилем + сам текст
echo '<div class="textblock">'.$file.'</div>';
?>
 

nataly

Member
Регистрация
03.04.2010
Сообщения
22
Спасибо, но к сожалению видимо по незнанию я не смогла применить PHP скрипт. А вот как это можно сделать с помщью скриптов JS?
Мне кажется нужно смотреть выше и решать проблему глобальнее. Зачем обязательно тхт?
Это во первых, а во вторых, если используется php то можно написать echo file_get_contents('myfile.txt');
Если нет то думаю придется использовать JS и подгружать все через скрипты, к сожалению не могу посоветовать другого варианта кроме как jQuery ajax. Но мне кажется это самый простой выход
Можно через PHP + CSS
Пример:
Код:
<!--Тут сами стили-->
<style type="text/css">
.textblock {
/*Тут уже вставляешь все что нужно, разберешься*/
color: red;
}
</style>
<?php
//путь к файлу
$filename='text.txt';
//Загружаем файл
$file=file_get_contents($filename);
//Выводим блок со стилем + сам текст
echo '<div class="textblock">'.$file.'</div>';
?>
Отличный скрипт, спасибо, однако я вставила его в свой HTML, выложила на сервер и в
результате - ничего (видимо я плохо знаю РНР) Даже не знаю, на что еще можно подумать...

каким образом открыть файл в JS?
Никаким образом открыть файл в js невозможно. Можно получить веб страницу целиком от сервера (document.location.href = ...) или что-то (текст, XML, ...) от скрипта - обработчика XMLHTTPRequest - запроса (это так называемый Аякс).

Если Вам нужно просто вставить в страницу целиком содержимое всего txt файла, напишите, как подсказал kein:
Код:
<div id="some_id">
    <?php echo file_get_contents('myfile.txt') ?>
</div>
и используя стили для #some_id - разместите и украсьте Ваш текстовый файл как угодно.

Если в txt файле несколько страниц и Вам нужно вывести одну случайную - замечательное решение предложил Вам fantasy4fun.

А вот если выводимая информация должна меняться в ответ на какие-либо действия пользователя - то тогда уже добро пожаловать в Аякс. Подробнее - по запросу. И так пост здоровенный получился.
Удачи!
Спасибо, в Вашем ответе сразу же масса ценной для меня информации, но пока - ничего не получилось. Файл txt простейший всего лишь из одной строки.
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
ничего не получилось
Может быть у Вас хостинг без РНР? Выложите, пожалуйста ссылки на Вашего хостера (и какой у Вас тарифный план) и на Ваш сайт. Или сами проверьте поддержку РНР следующим образом:
1. Создаете в текстовом редакторе файл test.php:
Код:
<?php phpinfo() ?>
2. Помещаете этот файл в корневую папку Вашего сайта.
3. В адресной строке обозревателя набираете:
Код:
http://moisait.ru/test.php
и нажимаете ENTER. Естественно, вместо moisait.ru поставьте Ваш домен.
4. Если наблюдаем большую сиреневую таблицу с различными данными по РНР, значит он есть и все вышеперечисленное должно работать. Возможно, неверно указан путь к файлу.
Ну а если нет - попробуйте связаться с администрацией хостинга, может быть у них на такой случай имеются CGI скрипты.
Удачи!
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Код:
<script>
$(document).ready(function(){
  $('#txtfile').load('http://mysite/myfile.txt');
});
<script>
<div id="txtfile"></div>
наверное как-то так, только нужно подключить сразу jquery. И наче без него чуть дольше, гуглить:XMLHttpRequest
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Итоги двухчасовой борьбы с великим творением дядюшки Билла (оно таки меня победило!!!):
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>без jquery</title>
<script type="text/javascript">
function createRequest ()
{
	var request = null;
	try
	{
		request = new XMLHttpRequest ();
	}
	catch (e)
	{
		try
		{
			request = new ActiveXObject ("Microsoft.XMLHTTP");
		}
		catch (e) {}
	}
	return request;
}

function getFile (name)
{

	var req = createRequest ();
	req.open('GET', name, false);
//	req.overrideMimeType('text/plain; charset=windows-1251');
	req.send(null);
	document.getElementById ('mytext').firstChild.data = req.responseText;

}
</script>
</head>
<body onload="getFile('text.txt')">
</body>
<div id="mytext"></div>
</html>
Тут, собственно, все просто:
После загрузки страницы (body onload) вызывается функция getFile(name), где name - имя файла, который появится в блоке mytext.
Эта функция создает объект для запроса к серверу (посредством функции createRequest()), получает наш текстовый файл и запихивает его в блок с id="mytext".
Проверено на Денвере: ИЕ, Опера, ФФ, Хром.
Теперь по поводу закомментированой строки, указывающей тип файла.
IE с этой строкой ВООБЩЕ работать не хочет.
Для остальных - если файл просто открыть в браузере, без этой строки вылезают кракозябрики.

В общем, попробуйте залить на сайт этот файл и text.txt с любым текстом - проверьте будет ли работать.

Код, который написал уважаемый kein отлично работает, НО ПРИ ОДНОМ УСЛОВИИ:
все файлы должны иметь кодировку UTF-8. Возможно (даже скорее всего!), jQuery имеет средства для перекодировки, но я еще пока о них не знаю, может кто подскажет. Тогда главный файл может быть в любимой cp-1251, а текстовый все равно нужно будет делать в UTF-8.
Удачи!
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Код:
function XmlHttpRequest(url,request_functn,data) { // url - строка для выполнения запроса,
// request_functn - функция которая получит http_request.responseText,
//должна иметь вид function function_name(responseText);
	var http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		alert('Не вышло, Невозможно создать экземпляр класса XMLHTTP ');
		return false;
	}
	http_request.open('POST', url, true);
	//Send the proper header information along with the request
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", data.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.onreadystatechange = function() { XMLHTTP_readyState(http_request,request_functn); };
	http_request.send(data);
}

function XMLHTTP_readyState(http_request,request_functn) {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			request_functn(http_request);//.responseText);
		} else {
			alert('С запросом возникла проблема');
		}
	}
Вот рабочий код ajax запроса, который работает во всех браузерах(ну по крайней мере я не встречал ошибки в ИЕ6-8, >=Опера 9.5, FF, Chrome)

все файлы должны иметь кодировку UTF-8
Вот потому-то у меня все проекты в utf8 :happy:
 

nataly

Member
Регистрация
03.04.2010
Сообщения
22
каким образом открыть файл в JS?
Никаким образом открыть файл в js невозможно. Можно получить веб страницу целиком от сервера (document.location.href = ...) или что-то (текст, XML, ...) от скрипта - обработчика XMLHTTPRequest - запроса (это так называемый Аякс).

Если Вам нужно просто вставить в страницу целиком содержимое всего txt файла, напишите, как подсказал kein:
Код:
<div id="some_id">
    <?php echo file_get_contents('myfile.txt') ?>
</div>
и используя стили для #some_id - разместите и украсьте Ваш текстовый файл как угодно.

Если в txt файле несколько страниц и Вам нужно вывести одну случайную - замечательное решение предложил Вам fantasy4fun.

А вот если выводимая информация должна меняться в ответ на какие-либо действия пользователя - то тогда уже добро пожаловать в Аякс. Подробнее - по запросу. И так пост здоровенный получился.
Удачи!
Спасибо большое за полезный совет, но что-то не совсем получилось - если яделаю тестовый файл test.php, состоящий из только одного скрипта <?php echo file_get_contents('http://mhi.net.ua/pic/6.txt') ?>, то все отлично получается и на экране появляется содержимое файла .txt (одна строка из 8 символов). А вот если то же самое вставляю в код HTML, то в этом случае - ничего! Может быть, помимо вставки скрипта PHP требуется что-то еще дополнительно, чтобы этот скрипт заработал в HTML?
 

nataly

Member
Регистрация
03.04.2010
Сообщения
22
каким образом открыть файл в JS?
Никаким образом открыть файл в js невозможно. Можно получить веб страницу целиком от сервера (document.location.href = ...) или что-то (текст, XML, ...) от скрипта - обработчика XMLHTTPRequest - запроса (это так называемый Аякс).

Если Вам нужно просто вставить в страницу целиком содержимое всего txt файла, напишите, как подсказал kein:
Код:
<div id="some_id">
    <?php echo file_get_contents('myfile.txt') ?>
</div>
и используя стили для #some_id - разместите и украсьте Ваш текстовый файл как угодно.

Если в txt файле несколько страниц и Вам нужно вывести одну случайную - замечательное решение предложил Вам fantasy4fun.

А вот если выводимая информация должна меняться в ответ на какие-либо действия пользователя - то тогда уже добро пожаловать в Аякс. Подробнее - по запросу. И так пост здоровенный получился.
Удачи!
Спасибо большое за полезный совет, но что-то не совсем получилось - если яделаю тестовый файл test.php, состоящий из только одного скрипта <?php echo file_get_contents('http://mhi.net.ua/pic/6.txt') ?>, то все отлично получается и на экране появляется содержимое файла .txt (одна строка из 8 символов). А вот если то же самое вставляю в код HTML, то в этом случае - ничего! Может быть, помимо вставки скрипта PHP требуется что-то еще дополнительно, чтобы этот скрипт заработал в HTML?
И еще "вдогонку" вопрос - содержимое файла из скрипта PHP должн появиться в том месте страницы HTML, где вставлен этот скрипт или только вначале?
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Может быть, помимо вставки скрипта PHP требуется что-то еще дополнительно, чтобы этот скрипт заработал в HTML?
Между прочим, ответ на Ваш вопрос содержится в Вашем посте:
яделаю тестовый файл test.php
Чтобы работал РНР код, файл должен иметь расшрение .php, иначе, как РНР интерпретатор узнает, что ему нужно из Вашего РНР кода сделать HTML?
Допустим, имеем файл text.txt:
Код:
Это просто текст
Пишем файл, в котором должен появиться текст из text.txt:
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head>
<body>
<div id="my_text">
<?php include 'text.txt' ?>
</div>
</body>
</html>
Если это будет файл, например, index.htm - ничего не получится, а если index.php - вуаля - все работает!!!
содержимое файла из скрипта PHP должн появиться в том месте страницы HTML, где вставлен этот скрипт
Да. Точно в том месте.
Чтобы в дальнейшем вопросов было меньше расскажу в 2-х словах, как работает РНР.
РНР файл - это текстовый файл, в котором вперемешку (по определенным правилам, конечно!) может находится код РНР и код HTML.
Сервер, получив запрос от браузера на передачу каого-то файла, файлы HTML сразу передает браузеру. А файлы РНР отдает интерпретатору (обработчику команд РНР). Интерпретатор РНР код выполняет, а HTML код оставляет без изменений. В результате, получается HTML код, который и передается браузеру. Между прочим, если в РНР файле нет кода HTML и ни одного РНР оператора вывода, то выходной HTML файл будет совсем пустой, если даже на входе было много РНР кода. А если РНР файл содержит только HTML код и ни строчки РНР - на выходе будет весь этот HTML.
Удачи!
 

nataly

Member
Регистрация
03.04.2010
Сообщения
22
Может быть, помимо вставки скрипта PHP требуется что-то еще дополнительно, чтобы этот скрипт заработал в HTML?
Между прочим, ответ на Ваш вопрос содержится в Вашем посте:
яделаю тестовый файл test.php
Чтобы работал РНР код, файл должен иметь расшрение .php, иначе, как РНР интерпретатор узнает, что ему нужно из Вашего РНР кода сделать HTML?
Допустим, имеем файл text.txt:
Код:
Это просто текст
Пишем файл, в котором должен появиться текст из text.txt:
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head>
<body>
<div id="my_text">
<?php include 'text.txt' ?>
</div>
</body>
</html>
Если это будет файл, например, index.htm - ничего не получится, а если index.php - вуаля - все работает!!!
содержимое файла из скрипта PHP должн появиться в том месте страницы HTML, где вставлен этот скрипт
Да. Точно в том месте.
Чтобы в дальнейшем вопросов было меньше расскажу в 2-х словах, как работает РНР.
РНР файл - это текстовый файл, в котором вперемешку (по определенным правилам, конечно!) может находится код РНР и код HTML.
Сервер, получив запрос от браузера на передачу каого-то файла, файлы HTML сразу передает браузеру. А файлы РНР отдает интерпретатору (обработчику команд РНР). Интерпретатор РНР код выполняет, а HTML код оставляет без изменений. В результате, получается HTML код, который и передается браузеру. Между прочим, если в РНР файле нет кода HTML и ни одного РНР оператора вывода, то выходной HTML файл будет совсем пустой, если даже на входе было много РНР кода. А если РНР файл содержит только HTML код и ни строчки РНР - на выходе будет весь этот HTML.
Удачи!
Спасибо за так доходчиво "разжеванный" ответ, а все равно не работает... Файл index.php по-прежнему все выводит, кроме интересующего скрипта php. Пробовала менять кодировку на UTF-8 - не помогает, в чем еще может быть дело?
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Приложите, пожалуйста, Ваши файлы с кодом.
 

nataly

Member
Регистрация
03.04.2010
Сообщения
22
Большое Вам спасибо, уже все заработало, но только вместо Вашего скрипта пришлось использовать другой:

Код:
<?php @print file_get_contents('myfile.txt') ?>
Спасибо так же всем за помощь и всем-всем удачи в нашем нелегком, но интереснейшем деле!
 
Статус
Закрыто для дальнейших ответов.
Верх Низ