2012-02-13 2 views
0

Спасибо за ваше время, чтобы посмотреть на это для меня.Неожиданные результаты при обработке строк в PHP

Справочная информация: Я обрабатываю файлы OFX/QFX для личного проекта финансирования. Я написал код в C#, и он отлично работает. Я могу создать свой объект импорта, обработать файл OFX/QFX по строкам и вывести на передний план вышеупомянутый объект. Однако я переношу это на PHP для использования в веб-приложении, которое не написано на .Net Framework.

Проблема: файл загружен пользователем и передан в файл PHP. При чтении строки строки по строке $line = fgets($file); я не получаю ожидаемых результатов. Я знаю, что файл открыт и что строка читается. Однако; когда я ставлю var_dump($line) сразу после того, как переменный присваиваются я получаю "string(15) "ENG "" когда то, что я должен получить это:

<LANGUAGE>ENG 

Моя модель обработки в значительной степени зависит от способности читать часть тега строки, а потому, что PHP, кажется, не удаляйте его, мой код не работает так, как ожидалось.

Вопрос: Может ли кто-нибудь сказать мне, почему я не получаю полное строковое значение при использовании fgets()? Также есть ли более правильный способ сделать это? Я хорошо разбираюсь в .Net, но PHP для меня немного новый, поэтому я предполагаю, что это просто причуда языка PHP, который я не понимаю.

Спасибо

+0

Что произойдет, если вы просто отгоните линию? – FreudianSlip

+0

Переменная правильная, но как только она печатается в вашем браузере, тег игнорируется, потому что он пытается рассматривать его как HTML. –

ответ

0

Как вы можете видеть с результатом var_dump(), это длинная строка длиной 15 символов. Вероятно, ваша проблема заключается в том, что тег <LANGUAGE> не отображается, а «там».

Попробуйте вместо этого использовать htmlspecialchars($line);. Но я обычно рекомендую использовать var_dump(), поскольку он очень четко показывает тип и длину значения переменной.

+0

Как и ваше сообщение. Кульминация всех ваших постов помогла мне в правильном направлении. –

3

Проблема заключается в том, что <LANGUAGE> обрабатывается браузером, считается недопустимым HTML тегами и игнорируется.

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

+0

Большое спасибо за ваш ответ. Знание этого небольшого количества информации помогло мне понять, что проблема заключается в написании моего кода, а не самого кода. Это определенно поставило меня на правильный путь. Еще раз спасибо! –

+0

Добро пожаловать. Я рад, что это сработало :) –

0

Я бы рискнул догадаться, если <LANGUAGE>ENG - это то, что вы ожидаете получить на экране, тогда оно, вероятно, есть. Ваш веб-браузер увидит это и попытается проанализировать его как тег и отобразит только данные, связанные с этим тегом, а не сам тег. Не проблема с PHP. Попробуйте повторить линию с использованием предварительных тегов

echo '<pre>' . $line . '</pre>'; 
+0

Это тоже помогло мне. Спасибо! –

Смежные вопросы