Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
NapalmRain
42 / 42 / 6
Регистрация: 18.05.2010
Сообщений: 671
1

Нестыковка отображения переменных на разных серверах

13.06.2012, 09:15. Просмотров 494. Ответов 4
Метки нет (Все метки)

Доброго времени суток.

Проблема следующего плана.
Сервер в автоматическом режиме создаёт текстовые файлы через shell скрипт забитый в cron.
В этом же скрипте вызывается php файл парсинга, который выковыривает нужные переменные из файла с помощью
PHP
1
2
3
4
5
6
$file = file('file.txt');
$fcount = count($file);
for ($i=0;$i<$fcount-1;$i++) {
list ($var1,$var2,$var3 ... ect) = explode(",", $file[$i]);
//ну и тут полученые переменные записываются в mysql
}
и записывает их в mysql таблицу.
И потом уже скрипт сайта считывает с этой таблицы данные и отображает данные.

Косяк состоит в том, что текстовые переменные на сайте отображаются с добавлением слэшей с обеих сторон.
то есть переменная на самом деле в таблице выглядет как: "Слово"
А на сайте она отображается как: \"Слово\"

подумал, что касяк в кавычках, добавил код:
PHP
1
$text = ereg_replace("\"","",$text);
тогда отображается как: \Слово\

Но если в mysql через phpmyadmin стереть ковычки, то отображается всё корректно.

Подскажите пожалуйста, в чём проблема?

На винде с денвером пролем не было, перенес на рабочий сервер под ubuntu 10.04 apache2 php5 и вот результат.

Добавлено через 13 часов 38 минут
Проблема эта только при работе с файлами. Создал текстовый файл на тестовом компе с денвером, проверил, всё хорошо, скинул на рабочий сервер, история такая же. Удалил содержимое файла и пересохранил средствами php на самом сервере, проблема исчезла. Может дело в кодировках? У самого идей нет уже..

Добавлено через 3 минуты
Ощущение, будто срабатывает функция addslashes() для переменных из файла.
Она может быть где-то включена в php.ini например, и автоматически применяться?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2012, 09:15
Ответы с готовыми решениями:

Конфликт PHP-кода на двух разных ОС и локальных серверах при создании сайта
Использовал сборку на Windows OpenServer и на OS X использовал MAMP. Такое дело. Программирование...

Cookies на разных серверах
Прочитал, что куки записываются на жесткий диск и 'активизируются' при запросе именно к этому...

Запуск ASP на разных серверах
На контроллере домена в ASP выполняется скрипт по созданию пользователя. В ходе скрипта запускается...

Виртуальные поддомены на разных серверах
Приветствую! На сервере есть виртуальные поддомены &lt;VirtualHost *:80&gt; ServerName site.com ...

3 сайта на разных серверах объединить в один
Добрый день! Есть такая &quot;хотелка&quot; у меня, разъясните пожалуйста возможно или нет реализовать...

4
Humanoid
Почетный модератор
10035 / 3912 / 355
Регистрация: 12.06.2008
Сообщений: 11,458
13.06.2012, 09:55 2
Возможно, в php.ini включен magic_quotes_runtime... убедись, что там есть строка
Код
magic_quotes_runtime = Off
Если версия PHP 5.4.0 или выше, то этой опции вообще нет.

Цитата Сообщение от NapalmRain Посмотреть сообщение
подумал, что касяк в кавычках, добавил код:
PHP
1
$text = ereg_replace("\"","",$text);
тогда отображается как: \Слово\
Оно и понятно... ведь "\"" - это просто кавычка, которую ты экранируешь. Т.е. он удалил все кавычки. Кроме того, тяжёлая ereg_replace не нужна для таких простых целей. Достаточно использовать str_replace
PHP
1
$text = str_replace('"','',$text);
или
PHP
1
$text = str_replace("\\\"","\"",$text);
В одинарных кавычках можно воткнуть двойную кавычку без экранирований. А в двойных кавычках её надо экранировать.

Либо можно воспользоваться функцией stripslashes
1
NapalmRain
42 / 42 / 6
Регистрация: 18.05.2010
Сообщений: 671
13.06.2012, 11:17  [ТС] 3
Humanoid, Благодарю.
Буду проверять.
0
crautcher
2021 / 1993 / 463
Регистрация: 27.05.2011
Сообщений: 6,838
13.06.2012, 11:26 4
Цитата Сообщение от NapalmRain Посмотреть сообщение
list ($var1,$var2,$var3 ... ect) = explode(",", $file[$i]);

Не по теме:

храни вы данные разделенные энтером моглиб через шел вынимать сразу и снять нагрузку (для шела это как 2 пальца)

0
NapalmRain
42 / 42 / 6
Регистрация: 18.05.2010
Сообщений: 671
14.06.2012, 10:07  [ТС] 5
crautcher, увы, но файлы эти генерирует стороннее серверное ПО, из которого я просто получаю данные. Поэтому только так.

Добавлено через 17 часов 5 минут
Да, действительно, дело было в
Код
magic_quotes_runtime = On
Всем спасибо за помощь!
0
14.06.2012, 10:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2012, 10:07

Не одинаковое поведение БД на разных локальных серверах
Приветствую. Собственно мои условия: проект разрабатываю на php, код хранится в репозитории на...

Несколько сайтов на одном IP на разных серверах за шлюзом
Здравствуйте, великие гуру! Недавно только перешел на линукс, и тут же начальство требует от меня...

Меню отображается по-разному на разных серверах и и браузерах
На локалхосте отображается правильно в Opere и IE - image_1.jpg А после загрузки на сервер...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru