#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]; }
Комментариев нет:
Отправить комментарий