Здравствуйте! Возникла такая проблема. Мне нужно читать сроки строки из файла. Я делаю это функцией fgets(), затем каждая строка превращается в массив через explode(). Но в файле может появиться такая запись Посоветуйте пожалуйста как можно прочитать такую запись, чтобы структура чтения из файла осталась той же. Заранее спасибо!
Наверно я не понял, что ты хочешь... Но вообще если ты explode - м разбиваешь строку по символу | - то он верёт массив типа Код (Text): [0] => 11 [1] => "<table> <tr> <td> text3 </td> </tr> </table>" [2] => true Вроде тебе так и надо? Или чего?...
Да он вернет именно это, но если прочитать запись полностью! fgets читает строку так Код (Text): 11|<table> И этот результат поступает в explode(). А мне надо каким то образом полностью прочитать запись
Я думаю обработку массива будет сложно реализовать. Есть вариант использовать readfile() с добавлением к каждой записи в конце какого либо символа и затем применение explode() по этому символу
Тогда подскажите какой символ можно использовать для обозначения конца записи чтобы была 100% уверенность что он не встретится в записи?
amplifier serialize() unserialize() file_get_contents() file_put_contents() ну или заменять в записях разделительный символ, скажем на его html сущтность
Чет нифига не выходит((( Пробовал с преобразованием html сущностей (htmlspecialchars() и htmlentitie()) - заменяются только хтмл теги, переносы в строке остаются. Пробовал serialize - тоже не помогло( может я не там их применяю (перед записью в файл)?
используй символ "|", он у тебя и так разделителем работает. Читай все сразу, делай explode() и соединяй по три. Если в записи встретится лишний "|", значит у тебя в любом случае все полетит.
Но зато известно что их ровно столько сколько их в первой строке, которая как бы задает названия полей таблицы (и ключей массива). Т.е. еще предварительно надо будет первую строку читать. Насколько я понимаю это повторное открытие файла будет влиять на скорость выполнения кода если файл большой?
ну как то так - Код (Text): str_replace("|","&#".ord('|').";",$text); она вообще преврощает массив в строку, ничего заменять там не надо, читай мануал
спасибо большое за совет! Заменил таким образом '\n' и '\r' и все заработало karakh, djunkie, sobachnik спасибо за содействие