Ещё кусок дурдома (если интересно)
Пытаюсь найти в тексте локации. По алгоритму:
"в" + "слово с большой буквы"
Но есть готовые решения только или для поиска конкретных слов, или для чего-то общего.
$needle = 'в А';
if (strpos($str, $needle) !== false) { echo "This returned true!";
}
Это конкретика.
preg_match_all("~[в ][А-Я+]~iu", $str, $m); //
preg_match_all("~[в ][Х+]~u", $str, $m); //
preg_match_all("~[в ][А-Я]~u", $str, $m); //
// ни один вариант не работает!
echo count($m[0]) . ' групп слов<br />';
print_r($m);
echo "<br>";
Тут выше даны три варианта, ни хрена не работает, выдает только большие буквы. То есть, "в" не видит, то, что дальше за большими буквами, не видит:
10 групп слов
Array ( [0] => Array ( [0] => У [1] => Х [2] => Я [3] => Е [4] => М [5] => Я [6] => Я [7] => Х [8] => К [9] => Х ) )
if(preg_match('/[в А-Я]+/u', $str)){
echo '!!!!!!!!!!!!!';
}
Вот эта хрень видит отдельные символы, но не целое сочетание "в А-Я+" То есть, если "в А-Я +" заменить на "№№№№№№№№" - не увидит. А если добавить в555 А-Я - нет такого в тексте - все равно видит, ненуачо, "в" есть, большие буквы есть...
Короче, пытаюсь что-то придумать с синтаксисом. Можно, конечно, не заморачиваться, использовать большой страшный код репетитора, сделать таблицу из одной буквы "в" и говорить программе - если есть слова из таблицы найденных в тексте имен и слова из таблицы "в" - занеси еще в какую-нибудь таблицу.
Но это уже извращение какое-то... Хотя может, другие варианты еще корявее...
Aagira 1 год назад #
Мария Фомальгаут 1 год назад #
Aagira 1 год назад #
К слову: можно я переименую твою запись «Проба», чтобы было ясно о чем это?
Мария Фомальгаут 1 год назад #
Можно переименовать...
Мария Фомальгаут 1 год назад #
в поиске похожая ситуация.
в замене: "." и «А-Я» на " "
В поиске: «в» и «А-Я»
И вот что не работает: я ищу не сочетание в-пробел-большие буквы а сочетание в-пробел-большие буквы и слово с большой буквы. То есть не А-Я а А-Я+
preg_match_all("~[в ][А-Я]~u", $str, $m);
И как присобачить этот плюс, не знаю.
Aagira 1 год назад #
Но там же должно как-то слово определять. То есть, либо искать до пробела или иного знака, либо добавить к запросу поиска еще и строчные буквы.
Мария Фомальгаут 1 год назад #
Вообще это делается: А-Я+ только тут с синтаксисом непонятно что.
Или я ошибаюсь, и правильно да, до пробела со строчными...
Так, что ли...
preg_match_all("~[в ][А-Я][а-я][ ]~u", $str, $m);
чёт не то… нет, четыре условия сразу не возьмет
Aagira 1 год назад #
В скобки 4 условия загнать если?
Мария Фомальгаут 1 год назад #
вот-вот, не берет четыре условия
Aagira 1 год назад #
А сколько берет? Попробуй все в одни скобки загнать квадратные.
Кстати, почему у тебя в этом случае все выражение в двойных кавычках?
Мария Фомальгаут 1 год назад #
А в каких надо? На каком-то форуме был такой вариант, и он работал.
Загнать все под одни скобки — не работает
Aagira 1 год назад #
В предыдущем случае, где работало, у тебя другой синтаксис. Попробуй оттуда взять, только подставить текущие значения.
Мария Фомальгаут 1 год назад #
вообще я сейчас сделала вариант с огромной страшной программой репетитора, где заставила программу искать уже найденные и помещенные в таблицу названия с большой буквы + предлоги из другой таблицы, где оставила в предлогах «в» «на» и еще немного
Хотя если интересно продолжить разбор этого вопроса, можем продолжить...
Aagira 1 год назад #
Ну, если устраивает, то ок.
Мария Фомальгаут 1 год назад #
Вообще там дофигища вопросов. Например, как прога поймет, что герой переместился в какое-то место? логично: Имя героя + глагол движения + Название локации.
Но глаголов-то до фига. Я их пытаюсь поделить на таблицы — завершенные, незавершенные, по родам, по временам...
И получается два варианта:
искать в тексте глаголы движения по принципу шариться по всем таблицам, ища глаголы, где в столбце «группа глагола» стоит 1 — группа движения.
Или сделать отдельную таблицу с глаголами движения, всеми, которые придут на ум. Плюс метода - не надо распихивать по таблицам. Минус метода — на хрена тогда таблицы...
Aagira 1 год назад #
Почему бы тебе не прописать обозначения действий? Пиши программу как игру. Если герой перемещаться пошел, то включится функция перемещения, которая затребует начальную локацию и конечную. Ну и наоборот, если ты про читалку сейчас. Если включился глагол перемещения, то функция будет ждать конечной локации, пока ее не получит, а если внезапно локация поменялась, то функция будет подразумевать, что перемещение произошло. Ну как-то так себе представляю это. Главное — чтобы эти сведения держались где-то за кадром все время.
Зачастую и человек, текст читая, хрен поймет где кто сейчас находится. В этом случае, программа будет посовершеннее. Можно даже ввести некие условные координаты, которые будут подставляться в функцию, если положение персонажей долгое время не менялось.
Aagira 1 год назад #
В условных координатах может быть в качестве конечной локации — «неизвестное направление», например. Так что, читая текст, программа так и напишет внутри себя: ушел в неизвестном направлении.
Мария Фомальгаут 1 год назад #
Доля правды есть, но может быть: если внезапно локация поменялась, то функция будет подразумевать, что перемещение произошло.
Хорошо сейчас в Баскервилль-холле… А в Лондоне дожди.
Здесь две локации, но перемещения нет.
Aagira 1 год назад #
Значит, программа решает, что пофиг, где это.