<?php

function preg_grep_keys_values($pattern, $input, $flags = 0) {
    return array_merge(array_intersect_key($input, array_flip(preg_grep($pattern, array_keys($input), $flags))),
    		preg_grep($pattern, $input, $flags));
}

$a = array(
  'mark@test.by.com'=> "Mark Mian lv",
  'jhon@test.lv.com'=> "John jack lv",
  'logon@test.en.com'=> "Bob Logon",
  'Stela@test.es.com'=> "Stela Josh",
  'json@test.es.com'=> "Json Josh",
  'bobby@test.lv.com'=> "Bob Mark"
);

$r = preg_grep_keys_values('~lv~i', $a);
print_r($r);