Бывает и 1000 ;) . Это было прикручено в стиле "а пусть будет". Проблема в том, что процент высчитывается (найденное / проиндексированное * 100), а найденное берется из ссылки "Еще с сайта". Вот тут то и загвоздка: Яндекс довольно часто в этой ссылке показывает завышенные цифры, если перейти по ссылке, то скорее всего будет намного меньше найденного.
Выложил набор полезных букмаклетов http://seanalyzer.ru/bookmarks/ , с помощью которых можно посмотреть в один клик количество ссылок, количество проиндексированного, тИЦ, ПР, статистику, роботс, copyscape, ... . Может пригодятся кому.
if (preg_match("/(?<=<!--комментарий-->) <table>.*?<\/table>/", $html, $matches)) echo "Таблица: " . $matches[0];
P.S. Регулярка по вашему примеру, если хоть один символ не так, работать не будет.
P.P.S. С русскими символами могут быть проблемы, если скрипт и текст в переменной в разных кодировках.
Регулярное выражение
/(?<=<!--комментарий-->) <table>.*?<\/table>/
Какой язык?
http://www.phpfaq.ru/files/friedl.rar
Фридл Дж. Регулярные выражения. Читаем внимательно и взахлеб. Исчерпывающий материал, написанный простым языком.
Segey, в начале файла поставьте
ini_set("display_errors", 1);error_reporting(E_ALL);
После отладки удалите.
В принципе планируется, как только времечко свободное появится.
Выложил сюда http://seanalyzer.ru/randomize/
Архив с файлом http://seanalyzer.ru/randomize/randomize.zip
Скрипты и стили надо вынести в отдельный файл, тада не будет лишнего кода до страницы.
По поводу поисковиков (да и не только): если страница при отключенных стилях и скриптах (да и картинках тоже) смотрится нормально (т.е. можно нормально почитать что написано и перейти по нужным ссылкам) то и поисковики будут нормально индексировать. Далее подключаем стили - появляется оформление, подключаем скрипты - появляется функциональность. При таком подходе и вам удобно (все разделено), и пользователям (в любом режиме можно нормально посмотреть страницу) и поисковикам (понятно о чем страница).
А вот и наш ответ, как всегда без комментариев :)
<?php $replace_blocks = array(); $parsed_str = preg_replace_callback("/\{([^{}]*?)\}/", "callback", $_POST['text']); $choices = create_choices($parsed_str); echo implode("<br>", $choices); function callback($matches) { global $replace_blocks; $v = preg_split("/(?<!\|)\|(?!\|)/", $matches[1]); if (count($v) == 1) return str_replace("||", "|", "{" . $v[0] . "}"); $replace_blocks[] = array_map(create_function('$v', 'return str_replace("||", "|", $v);'), $v); return "[__REPLACE_BLOCK_" . (count($replace_blocks) - 1) . "__]"; } function create_choices($cur_text, $cur_block = 0) { global $replace_blocks; if ($cur_block >= count($replace_blocks)) return array($cur_text); $choices = array(); for ($i = 0; $i < count($replace_blocks[$cur_block]); $i++) $choices = array_merge($choices, create_choices(str_replace("[__REPLACE_BLOCK_{$cur_block}__]", $replace_blocks[$cur_block][$i], $cur_text), $cur_block + 1)); return $choices; } ?>
Копируем в файл, файл кидаем на сервак, создаем простенькую формочку, которая будет методом POST передавать переменную text и получаем в браузере все варианты разделенные <br>.
Вот этого как раз я думаю не стоит. Абсолютно все варианты и не нужны на самом деле. Взять все тот же ваш пример в начале. Там как уже говорилось 10240 вариантов (а это 2 строчки текста всего), все они никому не нужны, а вот получить 1000 случайных из них это уже близко к реальности.
Хотя как вариант конечно можно.
З.Ы. Перл к сожалению не знаю совсем, разве что на уровне интуиции.