понедельник, 21 февраля 2011 г.

Дополнительные функции для Human Emulator

Чем удобен Хуман Эмулятор? Тем что в нём можно использовать любые php функции или php скрипты. Это делает программу реально гибкой и многофункциональной. Ниже приведены функции которые я использовал для написания одного из своих скриптов.

<?php

// //////////////////////////////// доп функции ///////////////////////////////////////////////////////////

// получить нужный текст. Используя последний параметр функцию можно вызывать много раз проходя по тексту файла или страницы пока последний параметр не станет равен -1.
function parse_text($body_text,$pref1,$pref2,$start_ind)
{
global $start_ind;
$ind = strpos($body_text,$pref1,$start_ind);
$ind1 = strpos($body_text,$pref2,$ind);

$res = substr($body_text, $ind+ strlen($pref1),$ind1-$ind-strlen($pref1));

$start_ind=$ind1;

return $res;
}

// получить нужный текст
function parse_text1($body_text,$pref1,$pref2,$start_ind)
{
global $start_ind;
$ind = strpos($body_text,$pref1,$start_ind);
//echo "ind = ".$ind."<br>";

if($ind===FALSE)
{
$start_ind=$ind;
return;
}

$ind1 = strpos($body_text,$pref2,$ind);

$res = substr($body_text, $ind ,$ind1-$ind+strlen($pref2));

$start_ind=$ind1;

return $res;
}

// получить нужный текст
function simple_parse_text($body_text,$pref1,$pref2)
{
$ind = strpos($body_text,$pref1);
$ind1 = strpos($body_text,$pref2,$ind);

$res = substr($body_text, $ind+ strlen($pref1),$ind1-$ind-strlen($pref1));

return $res;
}

// добавить в файл
function add_file($path,$page_body)
{
$file=fopen($path,"a+");
fputs($file,$page_body);

// close out file
fclose($file);
}
// получить заголовок и текст
function get_title_and_post($preftitle1,$preftitle2,$prfix1,$prfix2,$page_title,$page_post,$fld)
{
global $webpage,$page_title,$page_post,$textfile,$start_ind;
// получить body как текст
$page_body = $webpage->get_document_body(true);
$start_ind=0;
// получить заголовок
$page_title = parse_text($page_body,$preftitle1,$preftitle2,$start_ind);
$page_title = trim($page_title);
//echo "
";
// получить post
$page_post = parse_text($page_body,$prfix1,$prfix2,$start_ind);
$page_post = trim($page_post);

$page_post = replace_links($page_post,$fld);
// уберём лишнее
$page_post = str_replace("==========","====",$page_post);
}

// получить заголовок и текст
function get_text_title_and_post($preftitle1,$preftitle2,$prfix1,$prfix2,$filename)
{
global $webpage;
// получить body как текст
$page_body1 = $webpage->get_document_body(false);

// уберём лишнее
$page_post2 = str_replace("==========","",$page_post2);

// получить заголовок
$page_title2 = simple_parse_text($page_body1,$preftitle1,$preftitle2);
$page_title2 = trim($page_title2);

// получить post
$page_post2 = simple_parse_text($page_body1,$prfix1,$prfix2);
$page_post2 = trim($page_post2);


add_file($folder =".\\site\\".$filename.".txt",$page_title2."\n\n".$page_post2."\n\n") ;

}

// получить страницу по шаблону
function get_template($repl1,$repl2)
{
global $tmp,$page_title,$page_post;
// собрать готовую страницу
$temp = str_replace("TEXT_TITLE",$page_title,$tmp);
$temp = str_replace("TEXT_POST",$page_post,$temp );
$temp = str_replace('',$repl1,$temp);
$temp = str_replace('',$repl2,$temp );

return $temp;
}

// добавить в файл php подсветку
function set_php($page_post1)
{
global $webpage,$textfile,$start_ind,$app;

// получить body как текст
$page_text = $webpage->get_document_body(false);

$php_text = parse_text($page_text,"",0);

$php_text = str_replace("'","\\'",$php_text);
$php_text =" \n <?php highlight_string('<?php \n".$php_text."\n?>'); ?> \n";

$start_ind = strpos($page_post1,"Пример");
$page_php_text = parse_text($page_post1,"<DIV class=wp_syntax>","</PRE></DIV></DIV>",$start_ind);

$page_post1 = str_replace($page_php_text,$php_text,$page_post1);

$start_ind =0;
return $page_post1;
}

// заменить все ссылки
function replace_links($page_post,$fld)
{
global $obj_title,$start_ind;
// по всем ссылкам
$pr1 = '<A href="';
$pr2 = '</A>';
$pr3 = '">';

$start_ind=0;
while($start_ind!==FALSE)
{
// получить ссылку
$link1 = parse_text1($page_post ,$pr1,$pr2,$start_ind);
$link1."<br>";

$href1=simple_parse_text($link1,$pr1,$pr3);
$lnk_text=simple_parse_text($link1,$pr3,$pr2);


if( strtolower($lnk_text)==$obj_title)
{
$lnk = str_replace($href1,$fld.".php",$link1);
$page_post = str_replace($link1,$lnk ,$page_post);
continue;
}

$lnk = str_replace($href1,$fld."/".$lnk_text.".php",$link1);

$page_post = str_replace($link1,$lnk ,$page_post);
}

return $page_post;
}
?>

Комментариев нет: