Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Чтение файла посимвольно

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
dogidogi
Отправлено: 20 Октября, 2010 - 19:15:18
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Подскажите пожалуйста, как считать текствоый файл txt по символьно и каждый символ считанного текста засунуть в массив. вот, что получилось у меня:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.         $in_file = "In.txt";
  4.         $in_handle = fopen($in_file, "r");
  5.         $in_content = fread($in_handle, filesize($in_file));
  6.         fclose($in_handle);
  7. $e=trim($in_content);
  8. $d=strlen($e);
  9. for($i=0;$i<=$d;$i++)
  10. {$arr[$i]=$e{$i};
  11. }
  12. ?>
  13.  

содержание файла in.txt: xyz - 3 буквы.
когда делаю echo $arr[3] только тогда он мне выводит букву "x". и почему-то считает длину строки равно 9 символам.

(Отредактировано автором: 20 Октября, 2010 - 19:16:07)

 
 Top
EuGen Администратор
Отправлено: 20 Октября, 2010 - 20:04:03
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
dogidogi
Отправлено: 20 Октября, 2010 - 20:24:38
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




вот, что возвращает
Array ( [0] => � [1] => � [2] => � [3] => x [4] => y [5] => z )
как избавиться от лишних символов?
кстати мой пример с циклом считал точно также, как избавиться от непонятных символов спереди?

(Отредактировано автором: 20 Октября, 2010 - 20:26:43)

 
 Top
SAD
Отправлено: 20 Октября, 2010 - 20:27:41
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




преобразуйте, а не сохраните файл,который считываете в кодировке utf-8 без BOM

(Отредактировано автором: 20 Октября, 2010 - 20:33:51)

 
 Top
dogidogi
Отправлено: 20 Октября, 2010 - 20:40:40
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




SAD пишет:
преобразуйте, а не сохраните файл,который считываете в кодировке utf-8 без BOM

покажите поподробнее пожалуйста
 
 Top
OrmaJever Модератор
Отправлено: 20 Октября, 2010 - 20:45:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)






-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
dogidogi
Отправлено: 20 Октября, 2010 - 21:06:39
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




если не трудно напиши-те целиком код, как это будет выглядеть, а не 1 функцию, спасибо!
 
 Top
OrmaJever Модератор
Отправлено: 20 Октября, 2010 - 21:12:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)






или



незнаю какая там кодировка у тебя

(Отредактировано автором: 20 Октября, 2010 - 21:13:40)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
dogidogi
Отправлено: 20 Октября, 2010 - 21:20:33
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




вот, что у меня стоит в php.ini
[iconv]
iconv.input_encoding = ISO-8859-1
iconv.internal_encoding = ISO-8859-1
iconv.output_encoding = ISO-8859-1
 
 Top
OrmaJever Модератор
Отправлено: 20 Октября, 2010 - 22:08:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




я тебе привёл пример части кода. А кодировки подставляй сам.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
SAD
Отправлено: 20 Октября, 2010 - 22:17:35
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




OrmaJever, причем тут iconv?
dogidogi, вы в вашем редакторе текстовом, у меня например в notepad++ есть в верху на панели меню вкладка кодировки, там есть пункт преобразовать в ut8-8 без BOM, вот это и сделайте
 
 Top
OrmaJever Модератор
Отправлено: 20 Октября, 2010 - 22:42:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




я предложил смену кодировки в даном случае. негде не написано что даные файлы писал dogidogi, а не скрипт.
Возможно таких файлов много и не будет же он каждый открывать блокнотом и переделывать кодировку? для этого iconv() и зделана!


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
dogidogi
Отправлено: 20 Октября, 2010 - 23:14:24
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $arr=str_split(iconv('UTF-8', 'Windows-1251', file_get_contents('In.txt')));
  3. print_r ($arr);
  4. ?>
  5.  

выдает : Array ( [0] => )



выдает :
Array ( [0] => � [1] => � [2] => � [3] => � [4] => � [5] => � [6] => x [7] => y [8] => z )
 
 Top
SAD
Отправлено: 21 Октября, 2010 - 02:32:18
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




dogidogi, я вам уже сказал.
Если вы не понимаете что нужно сделать, то тогда уже удаляйте первые три элемента массива или не учитывайте их в будущем
 
 Top
JustUserR
Отправлено: 21 Октября, 2010 - 08:13:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




dogidogi Причиной неправильного функционирования вашего PHP-скрипта может быть неправильное совместное применение операций получения фактического размера файла и использование его в качестве размера буфера - дело в том что при работе с многобайтовыми кодовыми таблицами такой подход не будет предоставлять правильный результат как по причине несоответствия ожидаемого внутреннего представления строковой информации - так и несответствие размера файла и фактического ожидаемого числа символов в нем


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB