[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Неожиданная проблема с разбиением строки в массив
Владимир55
Нижеприведенный код нормально работает на Денвере, но не хочет работать на хостинге:

	$result = file_get_contents("result.txt");
$result = trim ($result);

$arr = explode(chr(13).chr(10), $result);

$n_arr = count ($arr);

echo "<br />Всего $n_arr <br />";


Нюанс в том, что скрипт работает в UTF-8, а текстовый файл в 1251.

На Денвере в массиве получается 100 элементов (как оно и есть на самом деле), а на сервере 1.

В чем тут может быть дело?
Игорь_Vasinsky
Цитата
chr(13).chr(10)


а чё явно не укажешь?

или кастыль попробуй
function unichr($u) {
return mb_convert_encoding('&#' . intval($u) . ';', 'UTF-8', 'HTML-ENTITIES');
}


_____________
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
Владимир55
Цитата (Игорь_Vasinsky @ 2.02.2015 - 12:18)
Цитата
chr(13).chr(10)

а чё явно не укажешь?

$arr = explode('\r\n', $result);

Так вообще нигде не работает - ни в Денвере, ни на сервере...

А Блокнот и Ворд нормально текстовый файл читают, переводы строк понимают!

=========
Костыль сейчас попробую, но вообще хотелось бы с этим фокусом разобраться.
Игорь_Vasinsky
Цитата
'\r\n'

"\r\n"


_____________
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
Владимир55
Без разницы, то же самое.
Игорь_Vasinsky
а если константу 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
Владимир55
Да, в этом все и дело!

Уже не первый раз встречаюсь с проблемой совместимости скриптов под ОС Unix / Windows.

Спасибо!
Владимир55
А вот такое решение можно считать униврсальным?
(На практике работает с обеими ОС.)
	$fopen = fopen("result.txt", "r");
while (!feof($fopen))
{
$line = fgets($fopen);
$arr[] = $line;
}
fclose($fopen);
Игорь_Vasinsky
ну работает и не трогай biggrin.gif

_____________
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
slobotsky.denis
https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%....BD.D0.B8.D0.B9

Решение: PHP_EOL везде где только можно

_____________
PHP: The Right Way
Бесплатное обучение Symfony2

Tox: 55BB67DE54B1CB14F8C37B4F3AED64E6A45922988D22F85EF75039751F26F05460664D978F5C
Игорь_Vasinsky
slobotsky.denis
что это было ? )))

_____________
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
slobotsky.denis
Игорь_Vasinsky
Ссылка на описание причины, почему работает именно так, а не иначе.

_____________
PHP: The Right Way
Бесплатное обучение Symfony2

Tox: 55BB67DE54B1CB14F8C37B4F3AED64E6A45922988D22F85EF75039751F26F05460664D978F5C
Быстрый ответ:

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