Второй пункт:
PHP:
$re = '
{<p\b(?:\s*\b\w+(?:\s*=\s*(?:"[^"]*"|\'[^\']*\'|[^\s<>\'"]+))?)*\s*>(.*?)
(?:$|</p\s*>|
(?=</?(?:p|div|body) #здесь перечислить теги, которые не могут быть в P
))}ixs
';
$str = preg_replace_callback($re, 'replaced_function', $str);
function replaced_function($m) {
$n = 10;
if (preg_match_all('/[а-яё]/i', $m[1], $temp) < $n)
return '';
else
return $m[0];
}