|
|
|
| Информация содержится в текстовом файле и преобразуется в массив следующим образом:
$text = file_get_contents("1.txt");
$m_text = explode(" ", $text);
|
Контролируя содержимое массива, я обнаружил, что в некоторых случаях в элемент массива вошло не одно слово, а два. Проконтролировав этот участок текстового файла посредством редактора WinHex, я вижу там код 20 - точно так же, как и в пробелах между другими словами.
Чем объяснить этот сбой? | |
|
|
|
|
|
|
|
для: Владимир55
(04.01.2010 в 15:34)
| | в этом файле только одна строка? | |
|
|
|
|
|
|
|
для: Trianon
(04.01.2010 в 15:40)
| | В текстовом файле много слов, разделенных пробелами. Есть переводы строк, но перед каждым из них тоже имеется пробел.
Используя пробел как разделитель, я намеревался сформировать массив, каждый элемент которого содержит только одно слово.
Так оно и получилось, но в некоторых случаях в элемент массива вошло не одно слово, а два. Причем между этими словами виден пробел.
Для прояснения ситуации я в переменной $text заменил все пробелы на служебное слово, состоящее из трех долларов ($$$), и сохранил результат в файл.
Абсолютно все пробелы заменились.
Тогда я использовал $$$ как разделитель
$m_text = explode("$$$", $text);
| и опять вижу сбой в том же элементе массива, что и ранее. | |
|
|
|
|
|
|
|
для: Владимир55
(04.01.2010 в 15:57)
| | Намек понял. Дело прояснилось. | |
|
|
|
|
|
|
|
для: Владимир55
(04.01.2010 в 16:22)
| | клеилось последнее слово предыдущей строки с первым последующей строки? | |
|
|
|
|
|
|
|
для: Trianon
(04.01.2010 в 16:32)
| | Вроде бы и не клеилось, ибо между ними код 20 существует.
Решило дело
$text = str_replace(chr(13).chr(10), " ", $text);
|
| |
|
|
|
|
|
|
|
для: Владимир55
(04.01.2010 в 16:48)
| | Тогда код был не ат.е., браузер ведь игнорирует переносы строки! | |
|
|
|
|
|
|
|
для: ~AquaZ~
(04.01.2010 в 19:21)
| | Это я знаю, но поскольку проблема снялась, то больше изучать её не стал.
А точнее потому, что даже предположить невозможно, в чем тут была хитрость. | |
|
|
|