function SearchPerson($texts, $ex_id = 0, $delta = -1, $myselect = null)
{
    $res = array();
    $persones_exact = array();
    $persones_part = array();
    $persones_approx = array();
    $sortarray = array();
    if (!$myselect) {
        $myselect = array();
        $sql = "SELECT persones.ID as ID,\n                        persones.RusName as RusName,\n                        persones.OriginalName as OriginalName\n                        FROM persones";
        $result = mysql_query($sql);
        while ($result && ($field = mysql_fetch_assoc($result))) {
            $myselect[] = $field;
        }
    }
    foreach ($texts as $text) {
        $ltext = strlen($text);
        $ei = 0;
        $pi = 0;
        $ai = 0;
        $delta = $delta != -1 ? $delta : limit_lev($ltext);
        reset($myselect);
        foreach ($myselect as $field) {
            $lev_n = levenshtein($field["RusName"], $text, 2, 1, 1);
            $lev_on = levenshtein($field["OriginalName"], $text, 2, 1, 1);
            $pos_n = strpos(strtolower($field["RusName"]), strtolower($text));
            $pos_on = strpos(strtolower($field["OriginalName"]), strtolower($text));
            $d_n = abs(strlen($field["RusName"]) - $ltext);
            $d_on = abs(strlen($field["OriginalName"]) - $ltext);
            $l_n = min($ltext, strlen($field["RusName"]));
            $l_on = min($ltext, strlen($field["OriginalName"]));
            if ($lev_n == 0 || $lev_on == 0) {
                $persones_exact[$ei] = $field;
                $ei++;
            } else {
                if ($ltext > 1 && (is_integer($pos_n) || is_integer($pos_on))) {
                    $persones_part[$pi] = $field;
                    $pi++;
                } elseif ($lev_n < $l_n * $delta + $d_n || $lev_on < $l_on * $delta + $d_on && (compare_substring($text, $field["RusName"]) <= $delta * $ltext || compare_substring($text, $field["OriginalName"]) <= $delta * $ltext)) {
                    $sortarray[$ai] = min($lev_on - $d_on, $lev_n - $d_n);
                    $persones_approx[$ai] = $field;
                    $ai++;
                }
            }
        }
    }
    array_multisort($sortarray, SORT_ASC, $persones_approx);
    $c = count($persones_approx);
    for ($i = 10; $i < $c; $i++) {
        array_pop($persones_approx);
    }
    $persones = array();
    $persones[$ex_id] = 1;
    $res["persones_exact"] = array();
    $res["persones_part"] = array();
    $res["persones_approx"] = array();
    foreach ($persones_exact as $person) {
        if (empty($persones[$person["ID"]])) {
            $persones[$person["ID"]] = 1;
            $res["persones_exact"][] = $person;
        }
    }
    foreach ($persones_part as $person) {
        if (empty($persones[$person["ID"]])) {
            $persones[$person["ID"]] = 1;
            $res["persones_part"][] = $person;
        }
    }
    foreach ($persones_approx as $person) {
        if (empty($persones[$person["ID"]])) {
            $persones[$person["ID"]] = 1;
            $res["persones_approx"][] = $person;
        }
    }
    $res["pcount"] = count($res["persones_approx"]) + count($res["persones_part"]) + count($res["persones_exact"]);
    return $res;
}
     $pos_n = strpos(strtolower($field["RusName"]), strtolower($text));
     $pos_on = strpos(strtolower($field["OriginalName"]), strtolower($text));
     $d_n = abs(strlen($field["RusName"]) - $ltext);
     $d_on = abs(strlen($field["OriginalName"]) - $ltext);
     $l_n = min($ltext, strlen($field["RusName"]));
     $l_on = min($ltext, strlen($field["OriginalName"]));
     if ($lev_n == 0 || $lev_on == 0) {
         $persones_exact[$ei] = $field;
         $ei++;
         $pcount++;
     } else {
         if ($ltext > 1 && (is_integer($pos_n) || is_integer($pos_on))) {
             $persones_part[$pi] = $field;
             $pi++;
             $pcount++;
         } elseif ($lev_n < $l_n * limit_lev($ltext) + $d_n || $lev_on < $l_on * limit_lev($ltext) + $d_on) {
             $sortarray[$ai] = min($lev_on - $d_on, $lev_n - $d_n);
             $persones_approx[$ai] = $field;
             $ai++;
             $pcount++;
         }
     }
 }
 array_multisort($sortarray, SORT_ASC, $persones_approx);
 $c = count($persones_approx);
 for ($i = 20; $i < $c; $i++) {
     array_pop($persones_approx);
     $pcount--;
 }
 $_RESULT["persones_exact"] = $persones_exact;
 $_RESULT["persones_part"] = $persones_part;