Как сделать?

Re: Как сделать?

ДоБрЫй_МеДвЕдЬ,
Регэкспы используются с функциями $strfind, strcomp, arrcomp, strpos. В старой справке об этом говорится, в новой (сейчас посмотрел) нет перекрёстных ссылок между разделами. Собственно всё просто, но понимание приходит с опытом.
Показываю, как пользуюсь я.

 Спойлер Show Spoiler Hide Spoiler
 Есть текст:

ДоБрЫй_МеДвЕдЬ написал(а):

Примеров по их юзанию в коде нигде нет (или я их не нашёл), поэтому всё пробовал методом проб и ошибок. Создаётся ощущение, что интерпретатор QSP просто не воспринимает регекспы как часть кода, для него это только ошибки синтаксиса. Испытал всё - заключал в фигурные скобки, в кавычки, в ' и ', словом сделал всё, что только мог. Толку - 0. Подаю сигнал SOS и жду помощи. Если не утону к чертям в ближайшее время.

нужно найти в нём слово из трёх букв.
Смотрим справку:

Справка написал(а):

\b - граница слова
\w - буква или цифра или символ подчёркивания

Пишем код:

Код:

! помещаем текст в переменную для удобства

$text="Примеров по их юзанию в коде нигде нет (или я их не нашёл), поэтому всё пробовал методом проб и ошибок. Создаётся ощущение, что интерпретатор QSP просто не воспринимает регекспы как часть кода, для него это только ошибки синтаксиса. Испытал всё - заключал в фигурные скобки, в кавычки, в ' и ', словом сделал всё, что только мог. Толку - 0. Подаю сигнал SOS и жду помощи. Если не утону к чертям в ближайшее время. "
! ищем слово из трёх букв с помощью strfind
$strfind($text,'\b\w\w\w\b')

В тексте будет найдено первое вхождение, соответствующее этому регэкспу, то есть слово "нет".
Регэксп можно изменить. Во-первых, не обязательно писать \w\w\w — есть специальный квантификатор. Он позволяет указать число повторяющихся символов или групп (вхождений):

Справка написал(а):

{n} — n вхождений

Теперь регэксп выглядит так:
\b\w{3}\b
используем:

Код:

$strfind($text,'\b\w{3}\b')

Или мы хотим найти слово из трёх букв, но чтобы второй символ не был буквой "е". Тут справка нас немного запутает:

Справка написал(а):

[] — Класс символа

вот тут кусочек более понятный:

Справка написал(а):

Для описания таких подмножеств применяются символы квадратных скобок "[" и "]". Квадратные скобки, встреченные внутри регулярного выражения считаются одним символом, который может принимать значения, перечисленные внутри этих скобок.

и ещё:

Справка написал(а):

Символ "^". Если этот символ стоит первым в секции задания подмножества символов (и только в этом случае!) он будет рассматриваться как символ отрицания.

Таким образом, чтобы найти слово из трёх символов, второй из которых, не "e", можно составить такое регулярное выражение:
\b\w[^е]\w\b
Используем:

Код:

$strfind($text,'\b\w[^е]\w\b')

Так мы найдём слово "или".
Вообще, с помощью метасимвола \w мы указывали, что нас устроит в слове или буква или цифра или символ подчёркивания, но что если у нас в тексте есть такие сочетания 1_г и мы не хотим их находить? С помощью тех же квадратных скобок можно указать наборы символов, среди которых нужно производить поиск:
\b[А-Яа-я]{3}\b
Используем новые знания:

Код:

! найдёт слово "нет"

$strfind($text,'\b[А-Яа-я]{3}\b')
! найдёт слово "или"
$strfind($text,'\b[А-Яа-я][A-Да-дЖ-Яж-я][А-Яа-я]\b')
! исключил букву "ё" потому что маленькая "ё" приводит к ошибке компиляции регэкспа у меня

Ну а для более широкого понимания, как составлять регэкспы, нужно копать интернет.

Aleks Versus
воздвигатель башни
useravatar
Offline
1334 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Большое спасибо, Aleks! Вы не представляете, как я вам благодарен.  smile

NickoAilus
Гуру FireStrike
useravatar
Онлайн
34 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Отличный текст! Его хоть сейчас в документацию )

Nex
useravatar
Offline
4274 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Nex,
да, я может в скором времени соберусь, добавлю в более развёрнутом виде на вики.

Aleks Versus
воздвигатель башни
useravatar
Offline
1334 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Всем привет! Такой вопрос - есть ли какой-нибудь способ сделать нормальный и красивый  фон в классике? $BACKIMAGE как-то слишком убого получается.

St-john
useravatar
Offline
70 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Нету )

Nex
useravatar
Offline
4274 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Снова обращаюсь к форуму за советом.
Надеюсь, ещё не не задолбал...

Можно ли сделать так, чтобы шрифт использовался в игре, но не был установлен на компьютере?

NickoAilus
Гуру FireStrike
useravatar
Онлайн
34 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

В классике - нельзя. Но можно положить шрифт в папку с игрой и попросить пользователя его установить )

В Навигаторе - можно через CSS.

Nex
useravatar
Offline
4274 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Всем доброго времени суток. Есть идея: сделать отображение параметров персонажа в отдельном окне(через msg), окно открываться должно ссылкой из дополнительного окна описаний. Перепробовал уже массу вариантов, но ничего не получается Т_Т

Likar
useravatar
Offline
1 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Можете ли подсказать как сделать чтобы часы (время в игре) перемещались в каждой локации.
Ну то есть в одной локации 14:00,переместился в другую локацию там уже 14:10,но при этом оператор на время во второй локации писать не нужно

Серый Кардинал
Сэр (Епископ)
useravatar
Offline
3 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
987
Всего опросов:
14
Всего сообщений:
16790292
Сообщений на этой неделе:
11
Пользователи форума:
 
Всего пользователей:
2150
Последним зарегистрировался:
Synapse