Разбор текстовых файлов в javascript / php? - PullRequest
0 голосов
/ 30 марта 2012

Вот мой файл: http://www.mediafire.com/?17bggsa47u4ukmx В основном это текстовый файл с другим расширением.

Это тест, для которого я создаю тестовый ридер в html / javascript / php. Я хочу, чтобы он прочитал $$ 0, означающий первый вопрос, а затем получил следующую строку контента после него, что всегда будет вопросом.

Мой код: В php:

$lines = file("hlm08.dat"); //file in to an array
// Make it search the whole file possible using a while loop by replacing the $$0
if (in_array("$$0", $lines)) {
    echo "I found first Question Number";
    /// Code to find the question right after it
}

Часть файла:

Hotel and Lodging Management
I
$$0

What do some hotel chains develop to establish formal relationships with employees?

A. Applications 
B. Regulations 
C. Policies
D. Contracts


/D
Contracts. Contracts are agreements between two or more people or organizations
stating that one party is to do something in return for something provided by
the other party. Employment contracts usually specify what an employee is
expected to do in exchange for being compensated by the hotel chain. These
contracts are often considered legal agreements that establish formal
relationships with employees. Hotel chains often develop regulations and
policies that employees are expected to follow, but these do not establish
formal relationships with the employees. Applications are forms that potential
employees fill out to apply for jobs.
$$1

An impact of antitrust legislation on business is that it prevents hospitality
businesses from

A. experiencing growth. 
B. being competitive. 
C. raising prices.
D. forming monopolies.

Я не уверен, как заставить сканировать весь файл и поместить все вопросы в массив. вопросы приходят сразу после каждого $$ 0 (номер вопроса).

Ответы [ 4 ]

1 голос
/ 30 марта 2012

Я думаю, что для вашей ситуации лучшая функция - explode(). Потому что вопросы в файле состоят из нескольких строк. Так что трудно определить весь вопрос с помощью циклических строк одна за другой

$file_content = file_get_contents("hlm08.dat");
$questions = explode("\n$$", $file_content);

print_r($questions);
0 голосов
/ 30 марта 2012

Версия Javascript (предполагается, что текстовый файл на том же сервере)

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
  $('<div />').load("hotels.txt",function() {
    var texts = $(this).text().split("$$");
    $.each(texts,function(i, data) {
      var question = $.trim(data).split('?')[0];
      $("#question").append(question+'<hr/>')    
    });
  });
});
</script>
</head>
<body>
<div id="question"></div>
</body>
</html>
0 голосов
/ 30 марта 2012

Полагаю, foreach может делать то, что вы пытаетесь

$lines = file('hlm08.dat');

foreach ($lines as $line_num => $line) {
    if($line == '$$0') {
         echo $lines[$line_num+1]; //'get the next line
    }
}

Обновление:

Но после обновления извлечение содержимого с помощью регулярных выражений может быть лучше.

$text = file_get_contents('hlm.dat');
preg_match_all('/\$\$[0-9](.*?)\$\$/', $text, $matches);
print_r($matches);
0 голосов
/ 30 марта 2012

Попробуйте это

$array = array();

$lines = file("hlm08.dat"); //file in to an array
foreach ($lines as $line)
{
    if (stripos($line, "$$") !== false) 
    {
        $array[] = str_replace("$$", "", $line));
    }
}

Вывод $ array

Array (
   [0] => First question
   [1] => Second question
   [2] => Third question
   .
   .
   .
etc
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...