PHP

З.Ы а что кстати скажешь о функции "найти темы с последнего посещения" ? Нормульно, правильно работает или надо ещё что - то?!
bob
[quote=Dimarik]З.Ы а что кстати скажешь о функции "найти темы с последнего посещения" ? Нормульно, правильно работает или надо ещё что - то?! [/quote] Клёва, вроде работает, но надо ещё потестить подольше. (:
bob я опять за советом, чего-то искал искал, но так и не смог найти ответ.

Пример:
пример тескта ЗНАК_1 определение ЗНАК_2 продолжение текста

Вопрос:
как можно достать то что находится между ЗНАК_1 и ЗНАК_2, может есть какая-нить стандартная функция, так что бы в одну строку?

и мне ещё надо учесть что в тексте ЗНАК_1 и ЗНАК_2 может встречатся не один раз, а N-е кол-во.

Заранее Спасибо!
bob
В одну строчку как я понимаю можно если:
а) знак_1 и знак_2 всегда одни и те же
б) не должно быть неверной вложенности. типа <zn1>...<zn2>...</zn1>...<zn2> — такое я не знаю как грамотно обработать.
в) строка, из которой надо вытаскивать "определения" не очень длинная.


Если эти условия будут соблюдены, можно воспользоваться функцией preg_match


$our_string - строка с текстом, который надо обработать
$regular_expression - регулярное выражение
$result - двумерный массив с результатом
PREG_SET_ORDER говорит о том, что результат надо упорядочить непосредственно по порядку совпадения. Типа самое первое совпадение будет первымы элементами массива резульатов.



<?php

$our_string = '<zn>ddddd</zn> ffffff <zn>eeeee</zn>'
$regular_expression = '|<zn> (.*?) </zn>|s';
preg_match_all ( $regular_expression, $our_string, $result, PREG_SET_ORDER);
?>

Массив $result должен быть таким:

$result[0][0] = dddd;
$result[1][0] = eeee;





Это я пример из книги под требуемую задачу переделал, так что в работоспособности мягко говоря не уверен (:



bob
Блин, чё за нафиг...

Закрывающий <zn> надо написать на </zn> а экранировать слэш.

Типа </ !"наоборотный слеш! zn>

Не даёт мне форум правильно написать (:
bob
И это... знак одинарная кавычка отображается не как одинарная кавычка, а как тот значок, что на кнопке с буквой "ё" (:


'' - найди 1 отличие (:
bob вот если получится вытаскивать текст из текста, то допишу функцию code и тогда всё будет норм, кроме одинарной ковычки... это надо будет переписать кусочек...
пример твой рабочий, только я теперь не пойму как достать из регуляра сам текст. То что между знаков - понял - из массива, а как достать текст... в твоём примере он ffffff
bob
Ааа, ещё и текст надо... Хм...

Первое что приходит на ум — применить ту же самую функцию ещё раз, но вычленять куски не между <zn></zn>, а между </zn><zn>. Но тогда надо будет сделать пару дполонительных проверкок. И геморно потом будет сопоставлять 2 результата...

Надо подумать, наверняка есть более элегантный саособ (:
продолжаем диолог...
bob, я вот тут думаю может отказаться от CSS и использовать стили немного подругому, например:
создаём файл (оптимально даже таблицу в бд) где
$style_bold = "<font color= size= face=''>"; or
$style_bold = "style='бла бла бла'";
и подставлять в форму переменную.
Зачем?
ну я так думаю, что не будет проблемм с брузерами и везде будет отображаться одинаково (а то в ФФ есть какие-то траблы с CSS);
шрифт будет маштабируемый;
если это будет в БД, то можно будет всё легко поменять. Особенно если дать возможность юзеру выбирать внешний вид сайта, то проще будет работать с перемеными чем с файлами (хотя наверно одинаково).

Вопрос, даже не вопрос, а просто интересно будет услышать твоё мнение по поводу целесообразности данной конструкции.
bob
Хорошая мысль, только я бы не держал css в БД.

Пусть он "генерится" непосредственно в сценарии. Типа будет файл style.css

.body { color: $user_body_color; background-color: $user_background_color;
}

который будет подключаться в сценарий примерно таким макаром:
<html><head>
<style>
$sql = 'select * from user_profile';
$result = mysql_query($sql);
for ($profile_data=array(); $row=mysql_fetch_array($result); $profile_data[]=$row);

$user_body_color = $profile_data['user_body_color']
$user_background_color = $profile_data['user_background_color'];
...
eval "style.css";
</style>
</head>


Т.е. в базе будут храниться только непосредственные значения параметров элементов.
но ты всё равно предлогаешь создавать файл style.css или я тебя не совсем понял... ты просто хочешь его самостоятельно генерить, а я вот думаю что вообще он нафиг не нужен, вообще отказаться от стилей в понятие CSS. А сделать свой собственный подход к этому делу.
Хотя твой вариант мя тоже устраивает, но так всё равно ФФ будет тупить при виде <link rel="stylesheet" href="style.css">, а точнее при виде .body { color: $user_body_color; background-color: $user_background_color; } . Хотя конечно если это баг, то он временный и в скором времени его заделают, а вот опять же шрифт будет не маштабируемый или как-то моно прописать в style.css размерность шрифта, что бы его потом моно было увеличить/уменьшить?
[quote=bob]Т.е. в базе будут храниться только непосредственные значения параметров элементов. [/quote] ну это само собой, я так и собирался хранить только значения.

Вобщем дело то такое и так и так вроде бы получатся свои плюсы и минусы... пока не сделаешь наверно не поймёшь.
bob
В style.css конечно можно прописать "переменную" размерность шрифта.
font-size: 100%;



В "Моём" варианте не будет <link rel="stylesheet" href="style.css">, список css-классов будет непосредственно в html-странице.
окей, спасибо за мнение bob, теперь я тебя понял. :)
А почему вы хотите разметку инлайнами писать? Внешний CSS удобнее, ИМХО.
2bob, думаю может сюда ты зайдёшь быстрее чем я тебя найду, вот книга по CSS, про которую мы говориле на миле http://www.ratclub.ru/cadora/css_book.rar , скачивай, там 26 метров, я потом скачаю у тебя, если ты не против =)
я бы на миле написал, но Кадору я уронил, а в жабе не знаю как часто ты бываешь.
bob
Акей, поставил качать, но т. к. уже иду спать, выложу у себя только утром. (:
bob
http://192.168.11.56/pub/css_book.rar

У меня что-то заглючило: на рэтклабе лежал рар-архив, а на мой жёсткий диск осхранился почему-то зип-архив. Я долго не пог понять почему же он у меня не открывается — битый что-ли?.. (:
[quote=bob] http://192.168.11.56/pub/css_book.rar

У меня что-то заглючило: на рэтклабе лежал рар-архив, а на мой жёсткий диск осхранился почему-то зип-архив. Я долго не пог понять почему же он у меня не открывается — битый что-ли?.. (: [/quote]
а чем качал?
bob
Оперой 8-ой.
[quote=bob]Оперой 8-ой. [/quote]
похоже, это ее косякс. :-(
глупый вопрос дилетанта:
пшп может перекрасить рисунок? язнаю как то можно формировать картинки из кусочков.. счетчики вроде так и делаются.
а вот перекрасить например двухцветный гиф (черный и прозрачный цвета) в нужный цвет? т.е. черный заменить на необходимый
это бы очень непомешало на новом хомяке =) звездочки в голосованиях чтобы красились в цвет темы.. и полосочки в голосованиях тож красить так можно было..
_
сори за ессвязную речь (:
[quote=Daredevil]глупый вопрос дилетанта:
пшп может перекрасить рисунок? язнаю как то можно формировать картинки из кусочков.. счетчики вроде так и делаются.
а вот перекрасить например двухцветный гиф (черный и прозрачный цвета) в нужный цвет? т.е. черный заменить на необходимый
это бы очень непомешало на новом хомяке =) звездочки в голосованиях чтобы красились в цвет темы.. и полосочки в голосованиях тож красить так можно было..
_
сори за ессвязную речь (: [/quote]
невозможного нет. но для таких целей используется GDLib. Дима собирался постичь все тайны это либы. :-)
И лучше бы ПЫНГ чем ГИФ. Пынг более родной для нее. А для этой задачи он тоже подходит.
можно? думаю что можно, я конечно ещё пока не знаю как это делается, но leksey верно сказал, я собирался познать тайны либы GD.
попробуем реализовать...
[quote=leksey]И лучше бы ПЫНГ чем ГИФ. Пынг более родной для нее. А для этой задачи он тоже подходит. [/quote]
ну я для примера сказал :)
bob
gdlib может это легко. (:

В себя приду обязательно напишу код для этого. Там всего несколько строчек потребуется.

А что гиф что пнг по-моему пофигу. Хоть на лету формат меняй. Берёшь "чёрный" гиф, перекрашиваешь его, скажем, в красный цвет и выводишь на экран как пнг.
bob
Вернёмся к нашим баранам.


// Файл-изображение звёздочки из голосования
$tile = imageCreateFromgif("star.gif");
// "Создаём" в памяти полноцветную картинку размером в моём случае 10х10 - под размёр звёздочки.
$image = imageCreateTrueColor(10, 10);

/* В php функции замены цвета требуют указывать в параметрах цвет в RGB-представлении - что то вроде 123,002,255. Это не очень круто, ибо нам удобнее оперировать более привычными #aa43e1. (Например, хекс-цвет можно вытаскивать непосредственно из css-файла.) Для этого делаем следующий финт ушами: переводим hex-представление цвета в RGB.
*/
// Тут у нас хранится hex-представление цвета. Нового цвета - того, которым мы будем заменять.
$color = "FF44AA";
// Делаем перевод. Получаем 3 числа RGB которые передадим в следующую функцию...
sscanf($color, "%2x%2x%2x", $red, $green, $blue);

/* ...функцию которая произведёт замену цвета в нашем рисунке.

Работает она так. Берёт пиксель с координатами (0,0) (в моёс случае, реально надо естественно взять другую точку, которая закрашена в цвет, который мы будем менять).
*/

imageFill($image, 0, 0, imageColorAllocate($image, $red, $green, $blue));

/* Всё, теперь $image содержит перекрашеный рисунок.

Дальше его можно перевести в любой формат - скажем, в star.png и выводить на экран.*/
bob
У Вики есть плагины для подсветки программных кодов. Надо бы прикрутить их к хомяку, незаменимая вещь для таких вот обсуждений. (;
Спасибо bob, за разъяснение, как только будет время сразу же налажу окрас имеджей.

Плугин есть, ты прав, надо будет прикрутить - прикручу. Сейчас реально просто не успеваю ни чего сделать.
Я тут нашёл полезную весчь,
Неплохим решением будет создание "напоминалки" в виде листа A4, в котором можно сосредоточить наиболее востребованные справочные данные, такие как список некоторых функций, модификаторы PCRE, режимы открытия файлов в функции fopen() и многое другое.

ftp://mil.tushino.com/users-folders/dimarik/web/PHP/
чтобы написать ответ, необходимо войти в учётную запись