Задать вопрос

Как записать в массив значения из текстового файла на PHP?

Ниже приведён кусок кода, который по массиву $search ищет определённое значение, в моём случае «google.com», а затем выводит на экран условие.

<?php

$search = array("yandex.ru", "google.com");

if (in_array("google.com", $search)) {
    echo "есть";
}

else {
    echo "нету";
}

?>

Но у меня есть большой текстовый файл base.txt, своеобразная база сайтов, который нужно записать в массив $search и работать с ним как с обычным массивом.

yandex.ru
google.com
bing.com
rambler.ru
yahoo.com

Решение найдено:

<?php

$data = file_get_contents("base.txt");
$search = explode("\r\n", $data);

if (in_array("google.com", $search)) {
    echo "есть";
}

else {
    echo "нету";
}

?>

— Ещё решения?
  • Вопрос задан
  • 27387 просмотров
Подписаться 6 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 9
zizop
@zizop
Ну или просто $result = file(«base.txt»);
Он уже в массив собирает строки. php.net/manual/ru/function.file.php
Ответ написан
Комментировать
@nikita2206
Если файл очень большой, то есть смысл не создавать массив, а просто пробежаться по строкам в цикле, не засоряя оперативную память…
Ответ написан
@RomAndry
как вариант
$base = file("base.txt");
$result = array();

foreach($base AS $row) {
  $result[] = $row;
}
Ответ написан
Vasya_Sh
@Vasya_Sh
<?php
$array = file($filename, FILE_IGNORE_NEW_LINES);

флаг — чтобы знак переноса не попадал в строку
Ответ написан
Комментировать
Melanitsky
@Melanitsky
explode("\n", file_get_contents('file_name'));
Ответ написан
Dennion
@Dennion
Разработчик PHPShop CMS.
$content = file_get_contents('base.txt');
$base = explode('\r',$content);
print_r($base);


Смотря как создавался файл, возможно нужно записать explode('\r\n',$content);
Ответ написан
AlexXYZ
@AlexXYZ
O Keep Clear O
Может через регулярки будет быстрее?:

$content = file_get_contents('base.txt');
$search = '/^<что ищем>$/'; // ^начало, $конец строки при поиске с использованием регулярных выражений.

$fp = fopen('base.txt');
if( preg_match($pattern, $content) )
{
если есть;
}
else
{
и если нет совпадений;
}
Ответ написан
@wanmen
1) Если совпадение точное, то лучше воспользоваться file().
2) Если необходимо работать с шаблонами, т.е. какие-то части строки нам не известны, то лучше file_get_contents и PCRE
Ответ написан
Комментировать
denisyukphp
@denisyukphp Автор вопроса
Возможный вариант, но у меня нет возможности сравнить скорость сейчас.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы