2015-05-19 6 views
-2

Я новичок в PHP. Я пытаюсь разработать простой глоссарий для учащихся начального английского языка.Читайте таблицу .txt с PHP

Я хочу использовать .txt как базу данных, взорванную «:». У меня TXT так:

Hola:Hello 
Good Bye: Adios 
Car:Coche 
Banana:Plátano 
Plane:Avión 

На данный момент я знаю, как напечатать весь текст или один столбец, но не может напечатать одно слово:

<?php 

$file = fopen("bank.txt", "r"); 

while(!feof($file)) { 

echo fgets($file). "<br />"; 

} 

fclose($file); 

?> 

Как я могу распечатать только ОДНО СПЕЦИФИЧЕСКОЕ СЛОВО? , например. Какой код требуется для печати только второго слова третьей строки?

+0

Вы что-то пробовали? Покажите нам свой код – Rizier123

+1

Добро пожаловать в SO! Потратьте минутку, чтобы осмотреть сайт и узнать, как задавать вопросы. Например: мы не будем писать для вас код. Потратьте время, чтобы добавить свой фактический код и объяснить, что с ним происходит. –

+0

FYI: Вы можете принять ответ, который больше всего вам помог и решился на вашу проблему (http://meta.stackexchange.com/q/5234). – Rizier123

ответ

0

Как уже упоминалось в комментариях ... в будущем вы должны сообщить себе, как задавать вопросы на SO.

Что касается вашего вопроса, вы должны взглянуть на функции explode-function и foreach-loop PHP.

Пример:

$data = 'Hola:Hello 
Good Bye: Adios 
Car:Coche 
Banana:Plátano 
Plane:Avión'; 

$arrData = array(); 

$lines = explode("\n", $data); 
foreach ($lines as $line) { 
    $words = explode(":", $line); 
    $arrData[] = array($words[0], $words[1]); 
} 

echo($arrData[2][1]); 
// Prints: "Coche" 
+0

Спасибо большое. Думаю, я должен выйти из системы и продолжать читать руководства по php некоторое время. Моя проблема в том, что $ data = fopen ("database.txt", "r"); сейчас не работает ... Это смущает – Kagarin

+0

Большое спасибо @Jan. Подумайте, я должен выйти из системы и продолжать читать руководства по php некоторое время. Моя проблема в том, что $ data = fopen ("database.txt", "r"); теперь не работает ... Это заставляет – Kagarin

+0

проверить функцию 'file_get_contents', чтобы получить содержимое файла. https://php.net/manual/en/function.file-get-contents.php – Jan

0

Это должно работать для вас:

Просто получить файл в массив с file(). Затем пройдите по каждой линии с помощью array_map() и explode() линии по ободу :.

<?php  

    $lines = file("test.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 
    $lines = array_map(function($v){ 
     return explode(":", $v); 
    }, $lines); 

    print_r($lines); //echo $lines[0][1] <- Will print the first line, second word 

?> 

Или то, что вы могли бы сделать, это изменить свой файл в формате .ini файла, например,

Hola="Hello" 
Good Bye="Adios" 
Car="Coche" 
Banana="Plátano" 
Plane="Avión" 

А затем вы можете просто использовать parse_ini_file(), например.

<?php 

    $file = parse_ini_file("test.ini"); 
           //^^^^ See also here the extension 
    print_r($file); 

?> 
+0

Ваш код печатает это: Array ([0] => Array ([0] =>:) [1] => Array ([0] =>:) [2] => Массив ([0] =>:) [3] => Массив ([0] =>:) [4] => Массив ([0] =>:)) – Kagarin

+0

В противном случае ваш будет проще , и лучше я думаю, – Kagarin

+0

@ Кагарин ах жаль, испортил некоторые аргументы, просто перезагрузите страницу и код должен работать; и вы получите свое простое решение. – Rizier123

Смежные вопросы