Вопросы по PHP
Пользователю _1_ в этой теме не оффтопить
Из критики: пока непонятно, для чего ты делаешь ksort на $patterns и $replacements. Они же и так в правильном порядке идут
А ты закоментируй строки ksort, и увидишь, что вместо Сентября вернёт Апрель. Это потому что ключи массива идут у одного сверху вниз, а у второго-снизу вверх. Таков синтаксис записи функции в оф. мануале.
Еще, раз у тебя часовой пояс является hardcoded (т.е. жестко прописанным, а не берется из профиля пользователя)
Он и не должен оттуда браться, я так считаю. Выводится время страны. У нас же один часовой пояс. Это в РФ разница с Владивостоком более 6 часов, если не ошибаюсь.
У меня на локалке время московское. Вот я его и подкоректировал. Как умел)))) У меня на хостинге пишется, что сервера расположены в Украине, Германии, и Великобритании. Поэтому я на всякий случай сделал жёсткую привязку.
Т.е. было бы что-то вроде <div id="time" class="oldclass otherclass">Текущее время... </div>. (В аттрибуте class можно перечислять несколько имен классов через пробел.)
Это идея. Это ж ты мыслишь объектно. Я пока что не "дорос" ))) Надо использовать.
Хотел бы попробовать написать небольшую CMS. Думаю, к весне управлюсь. Буду задавать много вопросов. Читал мануалы по сессиям и кукам-ничего не понял. Надо пробовать "ручками".
Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/
Да, и подскажи... Я вначале долго пытался крутануть юзер-агент через foreach, чтоб привести его к строке, и дальше уже эту строку "потрошить". Но я ничего не добился, потому что цикл возвращал мне последнюю подстроку, а не всю строку полностью. И unset не помогло-в таком случае выводит предпоследнюю подстроку. Почему?
Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/
А ты закоментируй строки ksort, и увидишь, что вместо Сентября вернёт Апрель. Это потому что ключи массива идут у одного сверху вниз, а у второго-снизу вверх. Таков синтаксис записи функции в оф. мануале.
А, все, понял. Как обычно, невнимательность. Но все равно можно было пронумеровать их по-своему сразу, чем сначала задавать в обратном порядке, а потом пересортировывать...
У меня на локалке время московское. Вот я его и подкоректировал. Как умел)))) У меня на хостинге пишется, что сервера расположены в Украине, Германии, и Великобритании. Поэтому я на всякий случай сделал жёсткую привязку.
Просто если ты прописываешь часовой пояс, то PHP сам скорректирует время как надо, где бы сервер ни стоял (при условии, что на нем в системных настройках пояс указан правильно, впрочем, большинство серверов с Linux работают по UTC-времени).
Я вначале долго пытался крутануть юзер-агент через foreach, чтоб привести его к строке, и дальше уже эту строку "потрошить".
Ничего не понял, что ты хотел сделать. Переменная $_SERVER["HTTP_USER_AGENT"] — это изначально строка, ее ни к чему приводить не надо. А по строке foreach никак не сделаешь, PHP такого не понимает. Если хочешь разбить ее на подстроки, скажем по пробелам или еще каким-то символам, и пройтись циклом по ним, то это делается с помощью функций explode и preg_split.
Критикуя — предлагай, предлагая — обосновывай!
4xpro.ru — мой личный сайт-мультиблог на Intellect Board.
Просто если ты прописываешь часовой пояс, то PHP сам скорректирует время как надо, где бы сервер ни стоял
Понятно.
Если хочешь разбить ее на подстроки, скажем по пробелам или еще каким-то символам, и пройтись циклом по ним, то это делается с помощью функций explode и preg_split.
Так я так и сделал. 2 строка кода-разбор строки функцией preg_split. Только дело в том, что эта функция возвращает массив. Посмотри мануал, ссылку не могу дать. И вот этот массив циклом не перебирается. Вернее, перебирается, только возвращает последнюю переменную массива. А вот про foreach вот что написано:
Ссылка $value на последний элемент массива остается даже после того, как оператор foreach завершил работу. Рекомендуется уничтожить ее с помощью функции unset().
И, похоже, я только что понял, в чём дело. Наверное, в этом:
Для того, чтобы напрямую изменять элементы массива внутри цикла, переменной $value должен предшествовать знак &. В этом случае значение будет присвоено по ссылке.
Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/
Cлушай, я только что полистал ТextCMS, какая там БД? SQLite?
Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/
В TextCMS базы как таковой нет. Все данные хранятся в обычных текстовых файлах в каталоге files/siteN + есть один индексный файл (тоже текстовый), по которому сопоставляется id и URL страницы, запрошенной пользователем, (в нем же хранится то, что нужно вывести в TITLE и еще ряд вспомогательных данных типа времени последнего редактирования). Кстати, писал бы я это дело сейчас, сделал бы этот файл на JSON, наверное, хотя это по ресурсам более затратно.
Так я так и сделал. 2 строка кода-разбор строки функцией preg_split. Только дело в том, что эта функция возвращает массив. Посмотри мануал, ссылку не могу дать. И вот этот массив циклом не перебирается. Вернее, перебирается, только возвращает последнюю переменную массива. А вот про foreach вот что написано:
А ты учитываешь, что там должен быть не просто символ-разделитель, а регулярное выражение с обрамляющими символвами? Т.е. если ты хочешь разбить текст по запятым, то это должно быть preg_split('|,|',$_SERVER['USER_AGENT'])
Попробуй для отладки вывести весь массив с помощью print_r, чтобы стало ясно, где ошибка возникает: при обработке массива или при разбиении...
Критикуя — предлагай, предлагая — обосновывай!
4xpro.ru — мой личный сайт-мультиблог на Intellect Board.
А ты учитываешь, что там должен быть не просто символ-разделитель, а регулярное выражение с обрамляющими символвами?
Так оно там есть и так.
Я не хочу разбивать текст по запятым. Это бессмысленно. Я, наоборот, в регулярке срезал все запятые, пробелы, все заглавные буквы, кроме W,M,X, чтоб получались огрызки слов, неполные слова, и только Windows, Macintoch, и X-11 приводили бы к полному и безоговорочному совпадению со строкой-шаблоном. Это позволило, например, однозначно определять что Windows-это не Windows Phone, не равно ему, потому что после регулярки выходило-Windowshone, сравнения не просходило, переменная не перезаписывадась с наибольшего шрифта.
Я только этим и занимался, вводя print_r для отладки после каждой строчки. Если возвращатся к теме Foreach, то он мне массив не выводил. Выводил последнее значение массива.
Ты мне скажи другое. Можно ли применять сторонние библиотеки в движке, тех, которых нет в модуле PHP по умолчанию, или вызывать набор библиотек к выполнению из папки СMS, даже если библиотеки с таким названием закомментированы хостером в его php-ini?
Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/
Ты мне скажи другое. Можно ли применять сторонние библиотеки в движке, тех, которых нет в модуле PHP по умолчанию, или вызывать набор библиотек к выполнению из папки СMS, даже если библиотеки с таким названием закомментированы хостером в его php-ini?
Тут нужно разделять два понятия. Есть библиотеки, написанные на самом PHP (например, шаблонизатор Twig, который используется в этом движке), а есть так называемые PHP extensions, которые пишутся на C, компилируются и подключаются к PHP через ini-файл (те же PDO или GD, например).
Библиотеки, написанные на PHP, можно подключать с помощью require или include без особых проблем, хостер это запретить не может. А вот с extensions так не получится: если оно не включено в php.ini, то просто будет считаться, что функции с таким именем не существует и выбрасываться соответствующая ошибка при попытке ее вызвать.
Критикуя — предлагай, предлагая — обосновывай!
4xpro.ru — мой личный сайт-мультиблог на Intellect Board.
Меня интересуют именно они. Чтоб не изобретать велосипед, а брать готовый код для тех или иных участков сайтов.
Библиотеки, написанные на PHP, можно подключать с помощью require или include без особых проблем, хостер это запретить не может
Тоесть, запрет распостраняется на модуль PHP, а на подключение и обработку PHP-библиотеки из папки моей CMS это никак не повлияет, не заблокируется, не вызовет ошибку, как на Unix, так и на Win серверах, правильно?
И получится ли в папке с CMS, скачанной юзером, розместить уже распакованный Сomposer с набором уже скачанных библиотек, и заранее определённых зависимостей?
Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/
C Композером я погорячился. Прийдётся писать свой селектор для подключаемых библиотек.
Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/
У вас нет прав для отправки сообщений в эту тему.


