Покажите запрос.
DELETE p.*, pe.*, pl.* FROM dle_post p LEFT JOIN dle_post_extras pe ON p.id=pe.news_id LEFT JOIN dle_post_log pl ON pl.news_id=p.id WHERE p.date >= '2009.01.01' AND p.date < '2012.01.01'
Это utf-8 который интерпретируется как windows-1251.
А что мешает парсеру подделать реферер? Что мешает парсеру подделать абсолютно все заголовки который передает браузер? Реальный выход это капча, если речь идет именно о парсере, надеюсь ТС правильно выразился. Антилич и реферер это немного другая ситуация от прямых ссылок на содержимое но не от парсера.
RewriteRule ^login$ login.php [L,QSA]
Больше реврайтов здесь не нужно.
Потому что утверждения не захватываются в результат поиска.
"/<div class='also_read'>.*?<\/div>/s"
Вам же помогли , но вы почему считаете что вам должны чего-то больше. А лично у меня нет никакого желания помогать тем, кто за помощью обращается в духе "напишите мне код замены, я же не просто так решил спросить на форуме".
Для "просто" также есть соответствующий раздел. Выбирайте требуемый раздел в зависимости от того, что вам нужно.
Афтар не знает как. Напишите его за него, он же ведь не просто так спрасил на форуме
Если ищите исполнителя можете найти его в соответствующем разделе.
Не вариант, его рассматривали в первую очередь. Оптимально, конечно, было бы найти сервис который удаленно исполняет javascript.
Пока что остановились на таком костыле, благо алгоритм там самый простой
if(preg_match($regexp, $packed, $out)){ $bits = array_slice($out, 2); $func = $out[1]; list($p, $a, $c, $k, $e, $d) = $bits; $p = stripslashes($p); $k = explode('|', $k); $d = array(); if(preg_match('/e=function\((.*?)\)\{return (.*?)\}/', $func, $match)){ $vars = explode(',', $match[1]); $uses = array(); $code = $match[2]; $code = preg_replace('/^([a-z]+)$/', '\$$1', $code); $code = preg_replace_callback('/(\w+)\.toString\((\w+)\)/', function($m) use($vars, &$uses){ if(! is_numeric($m[2])){ if(! in_array($m[2], $vars)){ $uses[] = $m[2]; } $m[2] = '$'.$m[2]; } if(! in_array($m[1], $vars)){ $uses[] = $m[1]; } $m[1] = '$'.$m[1]; return 'base_convert('.$m[1].', 10, '.$m[2].')'; }, $code); array_walk($vars, function(&$v){$v = '$'.$v;}); array_walk($uses, function(&$v){$v = '$'.$v;}); $evalCode = '$e = function('.implode(', ', $vars).')'; $evalCode .= count($uses) ? ' use ('.implode(', ', $uses).')' : ''; $evalCode .= '{return '.$code.';};'; if(@eval($evalCode) === false){ return false; } } if(preg_match('/while\(c--\){?(.*?)[;}]/', $func, $match)){ $code = $match[1]; $code = str_replace('||', ' ?: ', $code); $code = preg_replace('/\b([a-z])\(([a-z])\)/', '\$$1(\$$2)', $code); $code = preg_replace('/\b([a-z])\[([a-z])\]/', '\$$1[\$$2]', $code); $code = preg_replace('/([a-z])\.toString\(([a-z])\)/', 'base_convert(\$$1, 10, \$$2)', $code); $code = preg_replace('/\b(?<!\$)([a-z])\[/', '\$$1[', $code); $code = preg_replace('/\b(?<!\$)([a-z])$/', '\$$1', $code); $evalCode = 'while($c--){'; $evalCode .= $code.';}'; if(@eval($evalCode) === false){ return false; } } $k = array(function($e) use ($d){return $d[$e[0]];}); $e = '\\w+'; $c = 1; while($c--){ if($k[$c]){ $p = preg_replace_callback('/\b'.$e.'\b/', $k[$c], $p); } } return $p; }