Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Алгоритм, склоняющий ФИО

#php


Доброго всем времени суток.
Есть алгоритм, склоняющий ФИО. Алгоритм не выдает ошибки на хостинге, но выдает ошибки
на локальной машине, даже с новой версией вед сервера. Охота часть кода переписать,
за этим и обращаюсь.
function rule ($rule) {
    preg_match("/^\s*([fm]?)\s*(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s*$/",
$rule, $m);
        if ( $m ) return array (
        "sex" => $m[1],
        "test" => split(',', $m[2]),
        "mods" => array ($m[3], $m[4], $m[5], $m[6], $m[7])
    );
    return false;
}

Ошибка: 

Deprecated: Function split() is deprecated in ...\skl.php on line 172

Эта строчка появляется раз так 40. Могу показать весь код, но хотелось бы переписать
данный кусок, ошибка на строчке
"test" => split(',', $m[2]),
    


Ответы

Ответ 1



Используйте explode(). Синтаксис тот же. есть еще str_split($string,$piece_length), но вам нужен экспоуд P.S. впрочем, есть более новый заменитель имеено вашей функции. Называется она preg_split() Но в данном случае, когда разбивка идет по одной запятой, регулярные выражения явно не нужны.

Ответ 2



Замените split на preg_split. Это не ошибка. Оно ж вам ясно объясняет — функция объявлена deprecated.

Ответ 3



после всего выше сказанного, возникла одна маленькая неприятность, иногда на месте получившейся ФИО, выводится ошибка "Cannot parse supplied name". что это может быть? или Warning: preg_match() [function.preg-match]: Compilation failed: unrecognized character after (? or (?- at offset 2 in ...\skl.php on line 134 if (!isset($firstName)) { preg_match("/^\s*(\S+)(\s+(\S+)(\s+(\S+))?)?\s*$/", $lastName, $m); if(!$m) exit("Cannot parse supplied name"); if($m[5] && preg_match("/(ич|на)$/",$m[3]) && !preg_match("/(ич|на)$/",$m[5])) { // ошибка на строчку выше $lastName = $m[5]; $firstName = $m[1]; $middleName = $m[3]; $this -> fullNameSurnameLast = true; } else { // Сидоров Иван Петрович $lastName = $m[1]; $firstName = $m[3]; $middleName = $m[5]; }

Комментариев нет:

Отправить комментарий