Техника обработки данных при парсинге контента (во вкладке “контент”) функциями языка PHP:
1) Качаем, устанавливаем и запускаем локальный сервер Denwer
2) Копируем ваши PHP-скрипты для обработки контента при парсинге в папку Z:\denwer\www\denwer (где Z – имя виртуального диска с Denwer)
3) Отправляем POST-данные PHP-скриптам на Денвере из шаблона вывода программы Content Downloader макросом PHP_SCRIPT и получаем от них обработанные данные
Как отправлять в PHP-скрипт различные POST-данные (любой текст или код):
Переходим во вкладку “контент”, нажимаем ctrl+2, в открывшийся шаблон вывода прописываем примерно следующее:
1 2 | <PHP_SCRIPT=http://localhost/denwer/14.php[UTF-8]>data1=[DATAENCODE]5[/DATAENCODE] data2=[DATAENCODE]7[/DATAENCODE]</PHP_SCRIPT> |
В этом примере мы отправили PHP-скрипту (Z:\denwer\www\denwer\14.php) две переменных: data1, в которой содержится текст (число) "5" и data2, в которой содержится (передается) текст "7".
Значения переменных обязательно должны помещаться в DATAENCODE (DATAENCODE кодирует отправляемый текст в процентную URL-кодировку, чтобы скрипт правильно принял данные и автоматически расшифровал их из URL-кодировки).
Каждая отправляемая переменная прописывается с новой строки в формате имя_переменной=[DATAENCODE]значение_переменной[/DATAENCODE].
Скрипту можно отправлять многострочный текст/код любой длины!
Также обратите внимание на параметр [UTF-8], который прописывается после ссылки на вызываемый PHP-скрипт. Если этот параметр присутствует, то Content Downloader автоматически преобразует данные из UTF-8 кодировки при их получении от скрипта. Если этот параметр убрать, то данные декодироваться не будут.
Работа с отправленными данными в PHP-скрипте:
Для использования полученных от Content Downloader данных в PHP-скриптах применяются следующие операторы: $_POST[имя_переменной]. Например, мы отправляем в скрипт две переменных с числами 5 и 7:
1 2 | <PHP_SCRIPT=http://localhost/denwer/14.php[UTF-8]>data1=[DATAENCODE]5[/DATAENCODE] data2=[DATAENCODE]7[/DATAENCODE]</PHP_SCRIPT> |
Для того, чтобы, к примеру, сложить их в скрипте и полученную сумму умножить на 2, мы в PHP-скрипт пропишем следующее:
1 2 3 | <?php $res = ($_POST[a] + $_POST[b])*2; ?> |
Как вернуть обработанные данные из PHP-скрипта в любимый Content Downloader:
Content Downloader вставит в результат парсинга (на место макроса PHP_SCRIPT) все то, что вернется от скрипта оператором echo, например:
1 2 3 4 | <?php $res = ($_POST[a] + $_POST[b])*2; echo $res; ?> |
В этом случае, если мы отправляем в переменной a значение 5, а в переменной b значение 7, то в результате работы макроса PHP_SCRIPT останется их сумма, умноженная на 2 – число 24
Примечание 1: В дереве макросов шаблона вывода (ctrl+2) вы можете найти множество PHP_SCRIPT: PHP_SCRIPT_0, PHP_SCRIPT, PHP_SCRIPT_2, PHP_SCRIPT_3, PHP_SCRIPT_4, PHP_SCRIPT_5. Все они работают одинаково, только выполняются в разное время (в определенном порядке). Зная это вы можете вызывать, например, макрос PHP_SCRIPT внутри макроса PHP_SCRIPT_2 (так как сначала выполнится PHP_SCRIPT, и только потом PHP_SCRIPT_2).
Примечание 2: Если вы используете PHP_SCRIPT для импорта данных в базу MySQL, не забывайте экранировать спец символы в отправленных данных функцией mysql_real_escape_string (http://sbfactory.ru/cd/?p=419):
1 2 3 4 5 | <?php ... $_POST[id] = mysql_real_escape_string($_POST[id]); #экранируем специальные символы в полученных от Content Downloader POST-данных id ... ?> |
Привет
Почему не работает вот такое выражение?
[VAR:counter1]|[GRAN1]|[GRAN2]|counter=[DATAENCODE][VAR:counter1][/DATAENCODE]
вот такое работает,
[VAR:counter1]|[GRAN1]|[GRAN2]|counter=[DATAENCODE]test[/DATAENCODE]
т.е не желает передавать именно переменную counter1
Мне нужен счётчик, обнулямый при переходе на следущий урл для парсинга
[VAR][SET:counter1]3[/SET][/VAR]||
а в шаблоне повторяющихся страниц
||[VAR:counter1]|[GRAN1]|[GRAN2]|counter=[VAR:counter1]
в php скрипте
простой код увеличивающий на один значение переменной counter
возможно как-то по другому можно сделать?
Здравствуйте.
Рекомендую для этой задачи использовать внутренний счетчик повторяющихся границ парсинга [CC] (обратите внимание на его краткое описание в нижней части окна ctrl+5).
Если у вас будут еще вопросы, пожалуйста, задавайте их на форуме http://forum.SBFactory.ru
Спасибо!