Intellect Board Pro
Расширяемый движок форума с разделами разных типов
Объявление
Вышла версия 3.05 с фотогалереей и поддержкой PostgreSQL и SQLite.
Перейти к скачиванию
Привет, гость!

Вопросы по PHP

Пользователю _1_ в этой теме не оффтопить

Настройки отображения темы Показывать по сообщений с сортировкой .
Выводить , отправленные .
Страницы:
Распечатать
ПнБ
Начинающий
Всего сообщений: 150
Зарегистрирован: 5 мая 2015 г., 11:37
Рейтинг пользователя: 0

0
#11
4X_Pro написал(а):
Из критики: пока непонятно, для чего ты делаешь ksort на $patterns и $replacements. Они же и так в правильном порядке идут

А ты закоментируй строки ksort, и увидишь, что вместо Сентября вернёт Апрель. Это потому что ключи массива идут у одного сверху вниз, а у второго-снизу вверх. Таков синтаксис записи функции в оф. мануале.
4X_Pro написал(а):
Еще, раз у тебя часовой пояс является hardcoded (т.е. жестко прописанным, а не берется из профиля пользователя)

Он и не должен оттуда браться, я так считаю. Выводится время страны. У нас же один часовой пояс. Это в РФ разница с Владивостоком более 6 часов, если не ошибаюсь.
У меня на локалке время московское. Вот я его и подкоректировал. Как умел)))) У меня на хостинге пишется, что сервера расположены в Украине, Германии, и Великобритании. Поэтому я на всякий случай сделал жёсткую привязку.
4X_Pro написал(а):
Т.е. было бы что-то вроде <div id="time" class="oldclass otherclass">Текущее время... </div>. (В аттрибуте class можно перечислять несколько имен классов через пробел.)

Это идея. Это ж ты мыслишь объектно. Я пока что не "дорос" ))) Надо использовать.
Хотел бы попробовать написать небольшую CMS. Думаю, к весне управлюсь. Буду задавать много вопросов. Читал мануалы по сессиям и кукам-ничего не понял. Надо пробовать "ручками".

Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

ПнБ
Начинающий
Всего сообщений: 150
Зарегистрирован: 5 мая 2015 г., 11:37
Рейтинг пользователя: 0

0
. Редактировалось 1 раз, последний — #12
Да, и подскажи... Я вначале долго пытался крутануть юзер-агент через foreach, чтоб привести его к строке, и дальше уже эту строку "потрошить". Но я ничего не добился, потому что цикл возвращал мне последнюю подстроку, а не всю строку полностью. И unset не помогло-в таком случае выводит предпоследнюю подстроку. Почему?

Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

4X_Pro
Основатель проекта
Всего сообщений: 401
Зарегистрирован: 22 сент. 2014 г., 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 15

0
#13
ПнБ написал(а):
А ты закоментируй строки ksort, и увидишь, что вместо Сентября вернёт Апрель. Это потому что ключи массива идут у одного сверху вниз, а у второго-снизу вверх. Таков синтаксис записи функции в оф. мануале.

А, все, понял. Как обычно, невнимательность. Но все равно можно было пронумеровать их по-своему сразу, чем сначала задавать в обратном порядке, а потом пересортировывать...
ПнБ написал(а):
У меня на локалке время московское. Вот я его и подкоректировал. Как умел)))) У меня на хостинге пишется, что сервера расположены в Украине, Германии, и Великобритании. Поэтому я на всякий случай сделал жёсткую привязку.

Просто если ты прописываешь часовой пояс, то PHP сам скорректирует время как надо, где бы сервер ни стоял (при условии, что на нем в системных настройках пояс указан правильно, впрочем, большинство серверов с Linux работают по UTC-времени).
ПнБ написал(а):
Я вначале долго пытался крутануть юзер-агент через foreach, чтоб привести его к строке, и дальше уже эту строку "потрошить".

Ничего не понял, что ты хотел сделать. Переменная $_SERVER["HTTP_USER_AGENT"] — это изначально строка, ее ни к чему приводить не надо. А по строке foreach никак не сделаешь, PHP такого не понимает. Если хочешь разбить ее на подстроки, скажем по пробелам или еще каким-то символам, и пройтись циклом по ним, то это делается с помощью функций explode и preg_split.

Критикуя — предлагай, предлагая — обосновывай!
4xpro.ru — мой личный сайт-мультиблог на Intellect Board.

ПнБ
Начинающий
Всего сообщений: 150
Зарегистрирован: 5 мая 2015 г., 11:37
Рейтинг пользователя: 0

0
#14
4X_Pro написал(а):
Просто если ты прописываешь часовой пояс, то PHP сам скорректирует время как надо, где бы сервер ни стоял

Понятно.
4X_Pro написал(а):
Если хочешь разбить ее на подстроки, скажем по пробелам или еще каким-то символам, и пройтись циклом по ним, то это делается с помощью функций explode и preg_split.

Так я так и сделал. 2 строка кода-разбор строки функцией preg_split. Только дело в том, что эта функция возвращает массив. Посмотри мануал, ссылку не могу дать. И вот этот массив циклом не перебирается. Вернее, перебирается, только возвращает последнюю переменную массива. А вот про foreach вот что написано:
Ссылка $value на последний элемент массива остается даже после того, как оператор foreach завершил работу. Рекомендуется уничтожить ее с помощью функции unset().

И, похоже, я только что понял, в чём дело. Наверное, в этом:
Для того, чтобы напрямую изменять элементы массива внутри цикла, переменной $value должен предшествовать знак &. В этом случае значение будет присвоено по ссылке.

Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

ПнБ
Начинающий
Всего сообщений: 150
Зарегистрирован: 5 мая 2015 г., 11:37
Рейтинг пользователя: 0

0
. Редактировалось 2 раза, последний — #15
Cлушай, я только что полистал ТextCMS, какая там БД? SQLite?

Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

4X_Pro
Основатель проекта
Всего сообщений: 401
Зарегистрирован: 22 сент. 2014 г., 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 15

0
. Редактировалось 1 раз, последний — #16
В TextCMS базы как таковой нет. Все данные хранятся в обычных текстовых файлах в каталоге files/siteN + есть один индексный файл (тоже текстовый), по которому сопоставляется id и URL страницы, запрошенной пользователем, (в нем же хранится то, что нужно вывести в TITLE и еще ряд вспомогательных данных типа времени последнего редактирования). Кстати, писал бы я это дело сейчас, сделал бы этот файл на JSON, наверное, хотя это по ресурсам более затратно.
ПнБ написал(а):
Так я так и сделал. 2 строка кода-разбор строки функцией preg_split. Только дело в том, что эта функция возвращает массив. Посмотри мануал, ссылку не могу дать. И вот этот массив циклом не перебирается. Вернее, перебирается, только возвращает последнюю переменную массива. А вот про foreach вот что написано:

А ты учитываешь, что там должен быть не просто символ-разделитель, а регулярное выражение с обрамляющими символвами? Т.е. если ты хочешь разбить текст по запятым, то это должно быть preg_split('|,|',$_SERVER['USER_AGENT'])
Попробуй для отладки вывести весь массив с помощью print_r, чтобы стало ясно, где ошибка возникает: при обработке массива или при разбиении...

Критикуя — предлагай, предлагая — обосновывай!
4xpro.ru — мой личный сайт-мультиблог на Intellect Board.

ПнБ
Начинающий
Всего сообщений: 150
Зарегистрирован: 5 мая 2015 г., 11:37
Рейтинг пользователя: 0

0
. Редактировалось 1 раз, последний — #17
4X_Pro написал(а):
А ты учитываешь, что там должен быть не просто символ-разделитель, а регулярное выражение с обрамляющими символвами?

Так оно там есть и так.
4X_Pro написал(а):
Т.е. если ты хочешь разбить текст по запятым

Я не хочу разбивать текст по запятым. Это бессмысленно. Я, наоборот, в регулярке срезал все запятые, пробелы, все заглавные буквы, кроме W,M,X, чтоб получались огрызки слов, неполные слова, и только Windows, Macintoch, и X-11 приводили бы к полному и безоговорочному совпадению со строкой-шаблоном. Это позволило, например, однозначно определять что Windows-это не Windows Phone, не равно ему, потому что после регулярки выходило-Windowshone, сравнения не просходило, переменная не перезаписывадась с наибольшего шрифта.
4X_Pro написал(а):
Попробуй для отладки вывести весь массив с помощью print_r

Я только этим и занимался, вводя print_r для отладки после каждой строчки. Если возвращатся к теме Foreach, то он мне массив не выводил. Выводил последнее значение массива.
Ты мне скажи другое. Можно ли применять сторонние библиотеки в движке, тех, которых нет в модуле PHP по умолчанию, или вызывать набор библиотек к выполнению из папки СMS, даже если библиотеки с таким названием закомментированы хостером в его php-ini?

Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

4X_Pro
Основатель проекта
Всего сообщений: 401
Зарегистрирован: 22 сент. 2014 г., 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 15

0
. Редактировалось 1 раз, последний — #18
ПнБ написал(а):
Ты мне скажи другое. Можно ли применять сторонние библиотеки в движке, тех, которых нет в модуле PHP по умолчанию, или вызывать набор библиотек к выполнению из папки СMS, даже если библиотеки с таким названием закомментированы хостером в его php-ini?

Тут нужно разделять два понятия. Есть библиотеки, написанные на самом PHP (например, шаблонизатор Twig, который используется в этом движке), а есть так называемые PHP extensions, которые пишутся на C, компилируются и подключаются к PHP через ini-файл (те же PDO или GD, например).
Библиотеки, написанные на PHP, можно подключать с помощью require или include без особых проблем, хостер это запретить не может. А вот с extensions так не получится: если оно не включено в php.ini, то просто будет считаться, что функции с таким именем не существует и выбрасываться соответствующая ошибка при попытке ее вызвать.

Критикуя — предлагай, предлагая — обосновывай!
4xpro.ru — мой личный сайт-мультиблог на Intellect Board.

ПнБ
Начинающий
Всего сообщений: 150
Зарегистрирован: 5 мая 2015 г., 11:37
Рейтинг пользователя: 0

0
#19
4X_Pro написал(а):
Есть библиотеки, написанные на самом PHP

Меня интересуют именно они. Чтоб не изобретать велосипед, а брать готовый код для тех или иных участков сайтов.
4X_Pro написал(а):
Библиотеки, написанные на PHP, можно подключать с помощью require или include без особых проблем, хостер это запретить не может

Тоесть, запрет распостраняется на модуль PHP, а на подключение и обработку PHP-библиотеки из папки моей CMS это никак не повлияет, не заблокируется, не вызовет ошибку, как на Unix, так и на Win серверах, правильно?
И получится ли в папке с CMS, скачанной юзером, розместить уже распакованный Сomposer с набором уже скачанных библиотек, и заранее определённых зависимостей?

Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

ПнБ
Начинающий
Всего сообщений: 150
Зарегистрирован: 5 мая 2015 г., 11:37
Рейтинг пользователя: 0

0
#20
C Композером я погорячился. Прийдётся писать свой селектор для подключаемых библиотек.

Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

Следующие сообщения >>>
Страницы:
Распечатать

У вас нет прав для отправки сообщений в эту тему.