Знаете-ли-что? скрипт
Текст скрипта для чтения новостей Летописи
<?php header('content-type: application/x-javascript; charset=windows-1251'); function utf8win1251($s){ $out=""; $c1=""; $byte2=false; for ($c=0;$c<strlen($s);$c++){ $i=ord($s[$c]); if ($i<=127) $out.=$s[$c]; if ($byte2) { $new_c2=($c1&3)*64+($i&63); $new_c1=($c1>>2)&5; $new_i=$new_c1*256+$new_c2; if ($new_i==1025) $out_i=168; else if ($new_i==1105) $out_i=184; else $out_i=$new_i-848; $out.=chr($out_i); $byte2=false; } if (($i>>5)==6) {$c1=$i;$byte2=true; } } return $out; } $src = file_get_contents("http://letopisi.ru/index.php/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%97%D0%BD%D0%B0%D0%B5%D1%82%D0%B5_%D0%BB%D0%B8_%D0%B2%D1%8B"); $tmp = preg_replace('/.*<ul><li>(.*)<\/ul>.*<div class="printfooter">.*/s', '$1', $src); $tmp = trim(preg_replace('/href="/', 'href="http://letopisi.ru', $tmp)); $matches = explode('</li>', $tmp); if (sizeof($matches) > 1) { $trans = Array("\x0D" => "", "\x0A" => " "); do { $quote = trim($matches[rand(0, sizeof($matches)-2)]); } while (empty($quote)); $quote = str_replace('<li>', '', utf8win1251(strtr($quote, $trans))); $quote = preg_replace('/<div class="thumb.*<\/div>/', '', $quote); $quote = str_replace('"', '\"', $quote); print 'document.write("' . $quote . '");'; } ?>
Внимание!
Регулярные выражения, использующиеся, в частности, и в PHP, по умолчанию 'жадные' (greedy). То есть, например, фрагмент '.*' захватит максимально возможное число символов, при котором еще можно выполнить остальные требования выражения. В результате в данном случае будет выводиться не случайный, а всегда последний элемент списка. Чтобы 'вылечить от жадности' регулярное выражение достаточно поставить после 'звездочки' вопросительный знак. В данном случае следует поменять строчку
$tmp = preg_replace('/.*<ul><li>(.*)<\/ul>.*<div class="printfooter">.*/s', '$1', $src);
на
$tmp = preg_replace('/.*?<ul><li>(.*)<\/ul>.*?<div class="printfooter">.*/s', '$1', $src);
Нужно заметить, что про описанную особенность работы регулярных выражений почему-то забывают даже авторы серьезных и подробных книг по PHP.