[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вхождение в массив
Страницы: 1, 2
Rumych
Здравствуйте.
Есть такой вопрос.
Вот код:
if($_GET['b']){
$str = $_GET['b'];
$arr = file("test.txt");
if(in_array($str, $arr, true)) echo '{"a":"Есть такое слово!!!"}';
else echo '{"a":"Нет такого варианта, извините"}';
exit();
}

Суть в следующем: со страницы через AJAX в скрипт передается некоторое слово, например "site", скрипт принимает это слово, затем открывает текстовый файл который содержит перечень слов, в моем случае 'site' и 'Time', и считывает его в массив, а затем ищет вхождение полученного слова в массив.
Проблема в том, что передаю например 'site', в файле есть такое слово, в полученном массиве тоже но результат in_array() - false.
Подскажите пожалуйста где моя ошибка.
Спасибо.
killer8080
$arr = file("test.txt", FILE_IGNORE_NEW_LINES);
Rumych
$arr = file("test.txt", FILE_IGNORE_NEW_LINES);

- не помогает.
killer8080
Цитата (Rumych @ 16.01.2013 - 15:28)
- не помогает.

var_dump массива сделай
Игорь_Vasinsky
killer8080
буквально на днях - была такая же проблема

сравнивал даже длину слов из файла и простого массива. мистика - они разные, уж не знаю что там происходит, но на скорую руку сделал слова с разделителем || вместо PHP_EOL

так и не нашёл решение.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
twin
killer8080
Как ни странно, это далеко не всегда работает. Помогает только принудительная обрезка конечных символов перевода строк.

$arr = array_map('rtrim', file("test.txt"));


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Игорь_Vasinsky
вот где собака порылась.

а то я strtr с PHP_EOL - и болт...

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Rumych
[php]var_dump($arr)[/php ] - array(2) { [0]=> string(6) "Time " [1]=> string(4) "site" }
Rumych
Вы знаете, пошел передохнул, перекурил, пришел а оно заработало blink.gif ?!
Наверное тему можно закрывать, я думаю.
Всем спасибо.
killer8080
Цитата (twin @ 16.01.2013 - 15:41)
killer8080Как ни странно, это далеко не всегда работает.

возможно дело в различии EOL символа в разных ОС? Если файл создан в винде, а открывается на *nix, или наоборот.
Игорь_Vasinsky
Цитата
возможно дело в различии EOL символа в разных ОС?

так PHP_EOL и создана как универсальная константа

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
killer8080
Цитата (Игорь_Vasinsky @ 16.01.2013 - 18:06)
так PHP_EOL и создана как универсальная константа

И что? Файл то может быть создан не на сервере. Плюс, возможно в конце строки присутствовали другие пробельные символы, которые file естественно подчищать не будет. В такой ситуации - да, только тримить вручную.
twin
Цитата (killer8080 @ 16.01.2013 - 15:55)
Цитата (twin @ 16.01.2013 - 15:41)
killer8080Как ни странно, это далеко не всегда работает.

возможно дело в различии EOL символа в разных ОС? Если файл создан в винде, а открывается на *nix, или наоборот.

Да это понятно. Не понятно, почему функция с параметром FILE_IGNORE_NEW_LINES реагирует только на \n. Недоделка в PHP, а люди страдают)))

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
killer8080
Цитата (twin @ 16.01.2013 - 18:18)
Не понятно, почему функция с параметром FILE_IGNORE_NEW_LINES реагирует только на \n.

Хм.. а действительно, причем даже на винде. А если файл в mac формате, то file его вообще не разобьет в массив, возвращает весь текст в одном элементе массива.
Игорь_Vasinsky
так получается эта константа при записи только правильный формат выбирает в зависимости от оси, но не фига не различает при чтении?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.