Вырезать слова из строки по фильтру

113
19 июня 2021, 05:20

Существует некая строка. К примеру:

КЛАСС: первый ПЕРВЫЙ УЧЕНИК Иванов И.И. ВТОРОЙ УЧЕНИК Петров П.П. ТРЕТИЙ УЧЕНИК Смирнов С.С.

т.е. такие слова как КЛАСС, ПЕРВЫЙ УЧЕНИК и т.д. заранее мне известны и я их считаю клюём/разделителем. другой текст от ключа до ключа соответственно значением.

Дело в том, что какого то из ключа в строке может и не быть, например КЛАСС.

отработать строку, например, explode или регуляркой типа

preg_match_all('|КЛАСС(.+)ПЕРВЫЙ УЧЕНИК|isU', $item, $find);

проблем нет. Но у меня выйдет тогда очень много кода. Может есть какой-нибудь другой способ распрасить строку по необходимому мне формату?

з.ы. не прошу сделать за меня, просто навести на мысль.

Answer 1

В общем, сделал так. Перед всеми ключами поставил разделитель str_replace и далее спарсил строку через stripos

$healthy = array("КЛАСС", "ПЕРВЫЙ УЧЕНИК");
$yummy   = array("@КЛАСС", "@ПЕРВЫЙ УЧЕНИК");
$newphrase = str_replace($healthy, $yummy, $object).'@';
if (stripos($object, "КЛАСС") !== false) $class= true;
if ($class) {
    preg_match_all('#КЛАСС: (.+?)@#is', $newphrase, $find_class);
    $class= $find_class[1][0];
    if (strpos($class, ',') !== false) {
        $class[] = explode(',', $class);
    } else {
        $class= [$find_class[1][0]];
    }
} else $class= null;
READ ALSO
Капча в приложении, не использующем сессии

Капча в приложении, не использующем сессии

В приложении требуется использовать капчуГенерация и проверка капчи должна быть реализована локально, без использования внешних сервисов...

113
проблема с записью в базу данных mysql

проблема с записью в базу данных mysql

После перехода по ссылке на подтверждение емайл данные не записываются в базу данныхНе могу понять в чем проблема?

82