PHP

Первый вопрос у мя уже созрел, правда из участников кто интересуется php знаю только bob, но может кто нить подтянеться, а вопрос по регулярным выражениям, кто нить разобрался с ними, в осоновном интересует функция preg_replace, str_replace?
bob
Говорят, творческий рост программиста можно разделить на 2 этапа: "до регулярных выражений" и "после них" в том плане что после их освоения :)

И говорить про регулярные выражения можно часами.

Вкратце, разница между str_replace и preg_replace в том, что str_replace предназначен для составления простых условий замены (типа все символы "а" заменить на "б"), а с preg_replace работают когда замену проводят по регулярному выражению в формате PCRE.

например:
str_replace("
",
", $some_str");
заменяет символ перевода строки на html тег

preg_replace ('/(S+)@([a-z0-9.]+)/is' ,
Воровать не хочеться, просто хочу сам понять как и что делать, поэтому и писал с вопросом... Ну думаю так и сделаю. если не найдёться ответа.

Про разницу в регулярный выражениях - это я понял, сам использовал при замене некоторых тегов, просто возникли вопросы более конкретные, попозже напишу их суть...
Вот кстати тут и моно обсудить как научить скрипт выкидывать html теги из текста но оставлять их если они замкнуты например в тег (code).
Над сие вопросом и пошёл думать...
Вот такой вопрос - есть значиться файл на unix сервере, например file.html, и имеет он права доступа chmod 644 or -rw-r-r, вопрос как моно перезаписать этот файл через скрипт... на win я пробовал делать что то типа [code]chmod ("file.html", 0666);[/code] а вот на никсах такая штука не прошла, почему то... Вопрос номер два, как можно дать понять серверу что я и есть owner - пользователь, заходя через php скрипт?
bob
Почему не прошла — понятно :)

В windows сервер Апач по умолчанию (а ты наверное в его настройках не сильно копался) работает с администраторскими полномочиями. Ну а в *nix'e это ен так. :)
У Апача элементарно не хватает "полномочий" на изменение атрибутов файла!

Выход из этой ситуации по-моему только один: изменять атрибуты файла вручную через ftp.




Можно ещё конечно (я правда сам так ни разу не делал) давать определённому пользователю "супер права" через сам Апач. В .htaccess вроде можно прописать, чтобы после ввода пароля Апач узнавал в пользователе супер-пользователя и давал ему более широкие полномочия на работу с файлами. Но хостеры эту возможность дают только за большие деньги :)
А в ТТ вообще, .htaccess'ом нельзя пользоваться ни для каких целей. :(


В общем, изменять права доступа по-моему -— только через ftp... Но я был бы рад, если ошибаюсь ;)
точно, забыл я про разницу Апача на win и unix...
в ручную через Ftp это не GOOD, а ведь можно скриптом подлючаться к ftp, и так же скриптом моно поменять права?!
надо будет что нить почитать...

в ТТ много чего не совсем прикольно сделано...
к БД не возможно подключиться удалённо
и нотисы не выключены. :(
bob
Ну, в конце концов ТТ и не хостинг-провайдер. Место под сайт это скорее так, "чтоб было" :)



Хорошая идея подключаться к ftp! Я и не подумал над этим :)))
Только опять же надо проверить, может и не получится ничего :(
по поводу нотисов, некоторые моменты я знаю как вылечить, просто буду в начале перед тем как определить переменную. буду проверять а имееться ли она ваще, что нить типа [code]isset($name)[/code]а вот есть такой момент:
допустим переменная $_GET['com'] может быть равна 25.123 , а может быть равна 25.123.2 , я вначале скрипта с помощью функции list [code]list($name1,$name2,$name3)=explode(".", $name);[/code] разбиваю переменную на числа. Если $_GET['com']==25.123 , то будет notice...
Что можно сделать в этой ситуации?
bob
В php для этих целей есть полезнейший оператор — оператор "собака". Да-да, самая настоящая собака, — @. Переменная или оператор, перед которым стоит знак @ не будет посылать ошибок ни в браузер, ни даже записывать ошибку в логи :)


Т.е. для решения проблемы, можно записать так:
[code]@list($name1,$name2,$name3)=explode(".", $name);[/code]


Этой же "собакой" можно избавится от лишних вызовов проверки "на isset" :)
точняк... всё я точно пересидел за компом...
всё не каких скриптов более, мне нужно RTFM!
bob а не было желания попробовать написать онлайновую игру, по типу "Онлайновая игра Wizards World", про неё ещё статья висит Здесь
bob
Никогда об этом не думал :)
И не играл ни разу вообще ни в какую "браузерную" игру. Так что пока не знаю.

Мне кажется, если и делать такое, то интерфейс на flash'е, а коды на C писать. Ни того, ни другого я практически не знаю %)
Во всяком случае, интерфейс на флэше уж точно. Одной Явой тут не обойтись.
Ну это ещё зависит от конечного результата, моно и простенькую игру написать где и Явы хватит... Flash интерфейс конечно было бы прикольно. Да, я вот тоже в этом лапать, но может как нить попробуем что нить простенькое, но интересное слепить?
bob
У меня времени как воды в пустыне. и мало, и нужно очень.
Поэтому всерьёз заняться я не могу. :(

Но помоч — написать подпрограмму какую-нибудь — это завсегда. :)
[quote=bob]
Димарик, своруй в phpbb и функцию bbcod'а. Она там умеет отслеживать парные теги, и "конвертировать" только их, а не все. :)
[/quote]
я вот въехать немогу, помоему она там просто закрывает открытые теги, а если ставить просто закрывающий тег она его не учитывает... Жалко я потёр все свои phpbb форумы, не начем посмотреть...
надо просто до ума довести свои регуляры, такое не прошло бы, но ... просто раньше цитата работала подругому, а когда сделал не регулярах старую систему тоже пришлось оставить, так как половина сообщений использовала старую систему... вообщем трудно объяснить. Но это всё поправимо, нужно лишь время.
bob
[quote=Dimarik][quote=bob]
Димарик, своруй в phpbb и функцию bbcod'а. Она там умеет отслеживать парные теги, и "конвертировать" только их, а не все. :)
[/quote]
я вот въехать немогу, помоему она там просто закрывает открытые теги, а если ставить просто закрывающий тег она его не учитывает... Жалко я потёр все свои phpbb форумы, не начем посмотреть... [/quote] В том-то и дело, что нет :)
Я не уверен, что точно понял алгоритм — я в него особо не въезжал, — но работает примерно так:
сканирует сообщение;
если видит открытый тег, ищет ближайший к нему парный закрывающий; если находит — "конвертирует их обоих в html, если нет — оставляет как есть.

Единственное, что плохо, никак нельзя отслеживать очерёдность вложенности.
Типа если будет (b)бла(u)бла(/u)бла(/u), то получится бла[u]бла[/u]бла, а не бла[u]бла[/u][u]бла[/u]



upd: я тут сначала немного неправильно пример написал. Надеюсь, никто не заметил :)
bob
Хотел запостить сюда код, но не влезает :)
не, спасибо bob, но код не нужен... я впринципе разобрался, осталось только сделать!
Так спасибо за помощь! :)
не, ни фига не разобрался... я то думал что моё регулярное выражение будет заменять только если и первое и второе условие есть, а ему всё равно он заменяет то что есть!
bob
Естественно, ведь это именно регулярное выражение. А не условие :)
Ксловия надо писать отдельно. Типа
if тото, then
preg_replace тра-ля-ля
endif


Я правда не понимаю как это твоё выражение вообще работает :) Зачем там, например, array? %)
то что написано сверху не работает, там нехватает кучи обратных слешей... а array это я просто где то вычитал, ну и использую такую форму, это что типа замена с использованием массивов... так на словах объяснить не смогу, сам не до конца понял.
у меня ещё одна немного глупая идея, посему и пишу...
bob а ты не тестил какие нить web audio проигрыватели, я просто не когда не сталкивался, но знаю что должны быть... Вообщем если чего нить есть на примете - зарисуй ссылочку или на мыло...
bob
Я первый раз о таких от тебя сейчас слышу :)


В любом случае, — музыка, да и вообще любые звуки на сайтах это вред.
да это не совсем для сайта, так просто есть идейка одна, хочеться попробовать реализовать...
лана если чего найду покажу.
bob
Я знаю только одну фичу, связанную "с музыкой". Она печатает на сайте текущий винамповский playlist.
я так понял что плейлист храниться в папке windows/temp интересно по какому принципу она печатает... с той машины на которой играет винамп или же удалённо, если на машине на которой винамп, то это есть даже у некоторых плугинов такая функция.
bob
У меня с перепоя сегодняшнего дозрела одна мысль.

...Надо повышать грамотность в интернете. Проект Орфус Дмитрия Котерова вещь хорошая, но, вообще говоря, довольно бестолковая. Она помогает только авторам сайтов, где автор всего материала это и есть автор сайта (блог, например). Для "комьюнити-сайтов" Орфус бесполезен. Не будет администратор сервера подчищать тексты за многочисленными авторами. Можно, наверное, конечно, модернизировать систему, чтобы определять автора, и слать извещение именно ему. Но это нудно. И не решаит проблемы грамотности сообщений на форумах, к примеру.

Надо что-то другое. Надо чтобы на сайте был визуальный редактор, который бы подсвечивал ошибки в реальном времени, в момент написания сообщений (ну как Winword). Вот это было бы супер-мега круто. (Кстати, уважающие себя люди так и делают: материал на сайт они готовят в Word'е, отлавливают там все ошибки, верстают по всем правилам, и на сайт кладут красивый грамотный текст с правильныо расставленными знаками препинания, спецсимволами ну и т.д.)

Вот бы как-нибудь осуществить эту идею. Хотя бы представить, как это будет всё выглядеть. Наверное, в режиме реального времени подсвечивать ошибки не удасться: на Яве программу-орфограф хрен напишешь наверное, придётся использовать какое-нибудь "прикладное" приложение, работающее как внешний cgi-сценарий. А его не получится "крутить" постоянно — только обращаться временами.

Например, жмёшь "предпросмотр", и там уже идёт подсветка. Хотя это не очень здорово. И даже совсем не здорово. Но программа-орфограф в интернете нужна. Каким бы грамотным ты ни был, когда пишешь текст (особенно много текста) в маленькой убогой формочке с мелкими буковками и этой сраной прокруткой, волей не волей будешь ошибаться в самых примитивных словах.
да, идея классная... вот только редактор собрать будет проблематично, нужно что бы он проверял все слова, основываясь на словарь?! Думаю это интересно, но немного трудно.
Ещё труднее с знаками препинания. Да и с падежами и со склонениями... посмотрел бы я на механизм сие редактора... 8)
bob
То-то и оно...

На php это хрен напишешь. Максимум — слова на грамотность прверять. Завести mysql-таблицу со словарём, и сверять по нему. Чтоб типа "варона" не написать.

Я вот думал, сколько интересно места занимает орфографический модуль того же Ворда. (хотя нет, Вордовский наверное хорошо защищён. надо бы найти аналог с открытым кодом). Если в пределах 5-10 Мегабайт, то можно использовать его как cgi-скрипт. Передавать ему текст, он его будет проверять, возвращать результат, который на php каким-то образом надо будет перевести в html-тест, расставив стиялми "подсветку" ошибок. Как это сделать ума не приложу...
чтобы написать ответ, необходимо войти в учётную запись