Многоязычный переводчик

April 30, 2008

<?php
function translate($text,$lg) {
$lg = urlencode($lg);
$text = urlencode($text);
$link =
file_get_contents("http://google.com/translate_t?langpair=
$lg&text=$text");
preg_match(’/<div id=result_box dir=\"ltr\">(.*?)<\/div>/’,
$link, $out);
return $out[1];
}

// Пример:
// echo translate("hello")

// Пример c другим языком(С Английского на Немецкий):
// echo translate("hello", "en|de")
?>

Простой парсер google trends

March 14, 2008

Вот кусочек из моего php скрипта, который парсит гугл трендс

//Trends Parsing
$trends_url = ‘http://www.google.com/trends/hottrends/atom/hourly’;
$trends = file_get_contents($trends_url);
$trends = html_entity_decode(htmlentities($trends, ENT_COMPAT, ‘UTF-8′));
preg_match_all("/<a href=\"[^>]*>(.*?)<\/a>/is", $trends, $kw, PREG_PATTERN_ORDER);

На выходе получаем массив $kw, с которым уже можно что-нить химичить. У меня, например эти тренды идут дальше на парсинг контента по соответствующим кейвордам из google blog search, technorati, сниппеты google и msn и из них потом формируется пост в блог.

Например, парсим сниппеты гугла таким образом:

//Google Serps Parsing
$google_request = ‘http://www.google.com/ie?hl=en&num=’.$count.’&
start=0&lr=&q=’.urlencode(trim($kw[$j]));
$google_pattern = ‘/<a title="(.*)" href=(.*)>(.*)<\/a>/isU’;
$google_result = file_get_contents($google_request);
$google_result = html_entity_decode(htmlentities($google_result, ENT_QUOTES, ‘UTF-8′));
$google_result = str_replace("’", "’", $google_result);
$google_result = str_replace(" …", ".", $google_result);
$google_result = str_replace("…", ".", $google_result);
$google_result = str_replace(" | ", ", ", $google_result);
$google_result = str_replace("’", "’", $google_result);
$google_result = str_replace("#39;", "’", $google_result);
$google_result = str_replace("·", "", $google_result);
$google_result = str_replace("&", "and", $google_result);
$google_result = str_replace("amp;", "", $google_result);
$google_result = str_replace("middot;", "", $google_result);
$google_result = str_replace(""", "’", $google_result);
preg_match_all ($google_pattern, $google_result, $google_data);
$google_header = implode(". ", $google_data[3]);
$google_snippet = implode(" ", $google_data[1]);

Сниппеты Live/MSN вот так

//MSN Serps Parsing
$msn_url = ‘http://search.msn.com/results.aspx?format=rss&count=’.$count.’&
q=’.urlencode(trim($kw[$j]));
$msn_request = file_get_contents($msn_url);
$msn_request = html_entity_decode(htmlentities($msn_request, ENT_QUOTES, ‘UTF-8′));
$msn_request = str_replace(" …", " ", $msn_request);
$msn_request = str_replace("Live Search: ", "", $msn_request);
$msn_request = str_replace("#39;", "’", $msn_request);
$msn_request = str_replace("·", "", $msn_request);
$msn_request = str_replace("&", "and", $msn_request);
$msn_request = str_replace("amp;", "", $msn_request);
$msn_request = str_replace("middot;", "", $msn_request);
$msn_request = str_replace(""", "’", $msn_request);
preg_match_all("/<title[^>]*>(.*?)<\/title>/is", $msn_request, $msn_title, PREG_PATTERN_ORDER);
preg_match_all("/<description[^>]*>(.*?)<\/description>/is", $msn_request, $msn_desc, PREG_PATTERN_ORDER);
$msn_header = implode(". ", $msn_title[1]);
$msn_snippet = implode("
", $msn_desc[1]);

В итоге получим тексты сниппетов гугла/мсн и заголовки из выдачи, немного очищенные от мусора. Реализация возможно не фонтан, но все же рабочая.
Посидев с php учебником день-два можно наваять неплохой сборщик контента по трендсам :)

Если очень лениво, пишите в каменты может выложу готовый скрипт.

Постим без капчи: бэклинки через Trackback и Pingback

February 22, 2008

Не буду объяснять что такое trackback и pingback, об этом можно почитать здесь и  здесь

Как видите в обоих случаях результат выполнения функций это ссылки в заголовке коммента, причем track можно посылать с кейвордом сразу, а пинг самостоятельно выдирает кейворд из титла страницы, с которой его посылают.

Как это использовать в своих целях, Вы, наверняка уже догадались. Осталось автоматизировать этот процесс. Нам же дорого наше время?

Что самое интересное писать почти ничего не нужно. За нас это уже сделали Умы и гуру инета и супер CMS WordPress :)  , итак:

  Как послать трэк?

Чтобы послать трэк на чужой блог нужно сначала специальный линк, на который он посылается. Этот линк можно получить загрузив страницу со статьей. Блок, в котором прописана ссылка выглядит так:

вот под словом
trackback

как раз и есть ссылка для посылки трэка. Поиск и выдергивание ссылки из текста HTML оставляю на Ваших плечах.
Выглядит эта ссылка примерно так:
http://ruskii10k.com/wp-trackback.php?p=15

или так

http://www.quietlyscheming.com/blog/2006/03/06/flex-and-ajax/trackback/

 .

или так

http://eightbar.co.uk/2006/09/29/google-sketchup-second-life-export/trackback/

 .

Теперь осталось дело за мылым: Чтобы наш трэк опубликовался нужно его просто послать блогу товарища :)  . Для этого составляем обычный POST запрос в теле которого следующие параметры:

title=My Super Blog&url=http://mysuperblog.com&blog_name=Super Ankor&excerpt=Description


Расшифрую:

title – Заголовок коммента, будет писаться в тэге <strong> гугл это любит, так что можно писать какой-нить кейворд

url – Урл, на который хотим поставить трэк.

blog_name – используем как Анкор к ссылке – будет светится вместо имени.

excerpt – Сам коммент. Ну тут уж думайте сами , хотя многие здесь благодарят автора за пост , хвалят его. Некоторые , умные парни, даже научились цитировать часть сообщения, чтобы обойти Akismet :)

Вот и все, после посылки POST’а Вам придет XML-ответ:

  <?xml version=”1.0″ encoding=”utf-8″ ?>
  <response>
  <error>0</error>
  </response>

 

Здесь циферка 0 между <error> обозначает, что все прошло гладко и ваш трэк понравился блогу.



Как послать пинг ?

Тут методика чутка усложняется, но также остается на уровне “начинающего пхп-кодера”. Для работы с этим делом нам понадобится библиотека для работы с интерфесом XML-RPC. Библиотека эта распространяется бесплатно и скачать ее можно
здесь

 или выдрать опять же из WordPress’a (файл с именем class-IXR.php).

Для посылки пинга нам нужны три вещи:

1. Линк на статью в нашем блоге, от которой мы посылаем пинг.

2. Линк на статью в чужом блоге, в коменты которой мы посылаем пинг.

3. Линк на XML-RPC сервер  блога, в который постим и который принимает пинги.

С первыми двумя пунктами все ясно. Сосредоточимся на третьем:

Если блог принимает пинги, то по спецификации
pingback

он обязан передавать ссылку на pingback url в HTTP-заголовке ответа на каждый запрос параметр X-Pingback, например:

X-Pingback:
http://ruskii10k.com/pingback/xmlrpc

либо в заголовке HTML документа, пример:

<link rel=”pingback” href=”http://ruskii10k.com/pingback/xmlrpc”>

В моем полюбившемся движке блога есть функция, которая находит и возвращает pingback url. Так что снова всю грязную работу сделали за нас:

PHP 

function discover_pingback_server_uri($url, $timeout_bytes = 2048) {
global $wp_version;
$byte_count = 0;
$contents = ;
$headers = ;
$pingback_str_dquote = rel="pingback";
$pingback_str_squote = rel=pingback;
$x_pingback_str = x-pingback: ;
$pingback_href_original_pos = 27;
extract(parse_url($url));
if (!isset($host)) {
// Not an URL. This should never happen.
return false;
}
$path = (!isset($path)) ? / : $path;
$path .= (isset($query)) ? ?.$query : ;
$port = (isset($port)) ? $port : 80;
// Try to connect to the server at $host
$fp = @fsockopen($host, $port, $errno, $errstr, 2);
if (!$fp) {
// Couldnt open a connection to $host;
return false;
}
// Send the GET request
$request = "GET $path HTTP/1.1 Host: $host User-Agent: WordPress/$wp_version ";
// ob_end_flush();
fputs($fp, $request);
// Lets check for an X-Pingback header first
while (!feof($fp)) {
$line = fgets($fp, 512);
if (trim($line) == ) {
break;
}
$headers .= trim($line)." ";
$x_pingback_header_offset = strpos(strtolower($headers), $x_pingback_str);
if ($x_pingback_header_offset) {
// We got it!
preg_match(#x-pingback: (.+)#is, $headers, $matches);
$pingback_server_url = trim($matches[1]);
return $pingback_server_url;
}
if(strpos(strtolower($headers), content-type: )) {
preg_match(#content-type: (.+)#is, $headers, $matches);
$content_type = trim($matches[1]);
}
}
if (preg_match(#(image|audio|video|model)/#is, $content_type)) {
// Not an (x)html, sgml, or xml page, no use going further
return false;
}
while (!feof($fp)) {
$line = fgets($fp, 1024);
$contents .= trim($line);
$pingback_link_offset_dquote = strpos($contents, $pingback_str_dquote);
$pingback_link_offset_squote = strpos($contents, $pingback_str_squote);
if ($pingback_link_offset_dquote || $pingback_link_offset_squote) {
$quote = ($pingback_link_offset_dquote) ? " : ;
$pingback_link_offset = ($quote==") ? $pingback_link_offset_dquote : $pingback_link_offset_squote;
$pingback_href_pos = @strpos($contents, href=, $pingback_link_offset);
$pingback_href_start = $pingback_href_pos+6;
$pingback_href_end = @strpos($contents, $quote, $pingback_href_start);
$pingback_server_url_len = $pingback_href_end - $pingback_href_start;
$pingback_server_url = substr($contents, $pingback_href_start, $pingback_server_url_len);
// We may find rel="pingback" but an incomplete pingback URI
if ($pingback_server_url_len >
0) {
// We got it!
return $pingback_server_url;
}
}
$byte_count += strlen($line);
if ($byte_count >
$timeout_bytes) {
// Its no use going further, there probably isnt any pingback
// server to find in this file. (Prevents loading large files.)
return false;
}
}
// We didnt find anything.
return false;
}

Получаем линк:

PHP

$pagelinkedfrom = "http://yabadan.net/?p=40";
$pagelinkedto = "http://ruskii10k.com/2007/03/13/i-love-404-not-found-2/";
$pingback_server_url = discover_pingback_server_uri($pagelinkedto,2048);

И постим:

PHP

$client = new IXR_Client($pingback_server_url);
$client->
timeout = 3;
$client->
useragent .= — WordPress/ . $wp_version;
$client->
debug = false;
$client->
query(pingback.ping, $pagelinkedfrom, $pagelinkedto );

Есть один нюанс

, чтобы все
прошло антиспам

 прошло гладко нужно сначала в свой пост, от имени которого посылается пинг, добавить ссылку на адресата пинга (т.е. урл в которой мы пингуем). А после того как пинг успешно завершен можно
оставить

 :D удалить ненужные внешние ссылки.

Пример XML переговоров на уровне XML-RPC-сервера:

Посылаем запрос пинга:

POST /xmlrpc.php HTTP/1.0
Host: ruskii10k.com
Content-Type: text/xml
User-Agent: Incutio XML-RPC — WordPress/
Content-length: 286 <?xml version=”1.0″?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param><value><string>
http://yabadan.net/?p=40</string></value></param>
<param><value><string>
http://ruskii10k.com/2007/03/13/i-love-404-not-found-2/</string></value></param>
</params></methodCall>

 

Получаем ответ:

 

<?xml version=”1.0″?>
<methodResponse>
<params>
<param>
<value>
<string>Pingback from http://yabadan.net/?p=40 to http://ruskii10k.com/2007/03/13/i-love-404-not-found-2/ registered. Keep the web talking! </string>
</value>
</param>
</params>
</methodResponse>

 

Вот и все . Всем удачного трэкинга и пингига :)

© http://seorepa.com/show.php?id=991

Умный показ баннеров на фиде

Если у вас разнонишевый траф и вы сливаете его на PPC-партнерки, но такой вот кусочек кода поможет вам показывать на фиде баннеры, релевантные поисковому запросу. Спасибо за код Toxic Dream’у.

Вначале создаем массив с группами , в группах кейворды, потом в группе задаем URL и IMG.

<?php

//declare banner groups
$banners[’drugs’] = array(’viagra’, ‘huyagra’, ‘megastoyak’);
$banners[’casino’] = array(’poker’, ‘fold’, ‘rise’);
$q = @$_REQUEST[’q'];

$groups[’default’] = array(); //default group
$groups[’drugs’] = array(’url’=>’http://kalichnaya.dom’, ‘img’=>’http://feed/kalichnaya.gif’);

$bangrp = ‘default’;

foreach ($banners as $grp=>$kw){
   foreach($kw as $k){
         if (!(false === (strpos($k, $q))) ){
              $bangrp = $grp;
              break 2;
         }
   }
}

echo ‘<a href="’.$groups[$bangrp][’url’].’" target="_blank"><img src="’.$groups[$bangrp][’img’].’" border="0"></a>’;

?>

Редирект на PHP

January 17, 2008

<?
function parse_se($seoref)
{
   $out = array();
   $seo_info = parse_url($seoref);
   $se = @$seo_info[’host’];
   $query = @$seo_info[’query’];
   if(strstr($se, ‘google’) !== false)
   {
      $out[’se’] = ‘google’;
      parse_str($query, $out[’q']);
      $out[’q'] = urldecode(@$out[’q'][’q']);
   }
   if(strstr($se, ‘msn’) !== false)
   {
      $out[’se’] = ‘msn’;
      parse_str($query, $out[’q']);
      $out[’q'] = urldecode(@$out[’q'][’q']);
   }
   if(strstr($se, ‘yahoo’) !== false)
   {
      $out[’se’] = ‘yahoo’;
      parse_str($query, $out[’q']);
      $out[’q'] = urldecode(@$out[’q'][’p']);
   }
   return $out;
}
$ref = @$_SERVER[’HTTP_REFERER’];
//traff with referer
if($ref != ‘’)
{
   $se_out = parse_se($ref);
   switch ($se_out[’se’])
   {
      case ‘google’:
         $url = ‘for google’;
         break;
      case ‘yahoo’:
         $url = ‘for yahoo’;
         break;
      case’msn’:
         $url = ‘for msn’;
         break;
      default:
         $url = ‘for other se’;
         break;
   }
}
//no ref traff
else
{
   $url = ‘http://google.com’;//иди и ищи :)
}
header("Location: $url");
?>

Говномешалка

January 10, 2008

PHP скрипт, разбивающий текст нужным процентом кейворда.

define(’NEED_DENSITY’,20);

$key = "XANAX";
$body = "text about viagra here text about viagra here text about viagra here text about viagra here ";
$needDens = NEED_DENSITY;

$addKeysCnt =
($needDens/100)*(str_word_count($body)/str_word_count($key));
$arWords2 = explode(’ ‘,$body);
for($j=0;$j<$addKeysCnt;$j++) {
$arWords2[] = $key;
shuffle($arWords2);
}

$body = implode(’ ‘,$arWords2);

echo $body;

Мульти-айпишный парсер

January 7, 2008

Бывают такие ситуации, когда нужно быстренько напарсить контента, а проксей хороших под рукой нету.

Вот, написал небольшую функцию для использования нескольких айпишек для исходящих соединений.

Что делать дальше с контентом - решать Вам. В качестве примера - парсинг сниппетов блогсерча.

 

$keyword - кейворд в urlencode();

__________________________________
error_reporting(0);

function parsenewsnippets($keyword)
{

$ip[0]=’77.77.77.72′;
$ip[1]=’77.77.77.73′;
$ip[2]=’77.77.77.74′;
$ip[3]=’77.77.77.75′;

for ($k=0;$k<count($ip);$k++)
{
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$sourceip = $ip[$k];
socket_bind($sock, $sourceip);
socket_connect($sock, ‘blogsearch.google.com’, 80);
if($k==”0″){$ss=”0″;}else{$ss = $k . “00″;}
$request = ‘GET /blogsearch?hl=en&num=100&start=$ss&ie=UTF-8&sa=N&q=’ . $keyword . ‘ HTTP/1.0′ .
“\r\n” .’Host: blogsearch.google.com ‘ . “\r\n\r\n”;
socket_write($sock, $request);
while(!socket_last_error($sock)){
if($buffer=socket_read($sock,1,PHP_NORMAL_READ)){
$content .= $buffer;
}
}
socket_close($sock);
sleep(5/count($ip));
}
$d = $content;
$content = “”;
return $d;

}

—————

Chippa.name

Автонаполняемый блог на блоггере

December 27, 2007

Скрипт добавляет (отправляет мылом) новости (по 1 посту за раз) на ваш блог, предварительно укажите в блоге(на блоггере) адрес мыла - куда слать письма скипту.

Контент берется из Bloglines, BlogPulse, Findory, Google Blog Search, Google News, Ice Rocket, Technorati, Yahoo! News, MSN Live News.
Потом переводится с англ. на ит. а потом обратно.
На выходе получаем уникальный текст обновляемый каждые 5-10 минут.
Ссылок в теле поста на источник на блоге не будет, если хотите, пределывайте скрипт или вставляйте в трубы свои ссылочки на тдски и т.п.(кодеки и т.п.)
Кто умеет пользоваться yahoo pipes вот ссылочка на трубу
http://pipes.yahoo.com/pipes/pipe.ed…201c58d8acb3c3
Переделывайте как хотите.

PHP код:
<?php 
// RSS2email  v 1.1
//by medar & goarmy

// Тут адрес фида
// key кей
// kolvo  количество новостей в рсс ленте
$content = file_get_contents(’http://pipes.yahoo.com/pipes/pipe.run?_id=

6841b9ab55dcbc0423201c58d8acb3c3&_render=rss&key=viagra&kolvo=1‘);  

$content = str_replace("\n","",$content);
unset($match);  
preg_match("#<item>(.*?)<\/item>#", $content, $match); 
$item = $match[1]; 
$err = preg_match("#<title>(.*?)<\/title>#", $item, $match); 
$title = $match[1]; 
$err = preg_match("#<description>(.*?)<\/description>#", $item, $match); 
$description = $match[1]; 
$subject = $title; 
$message = $description; 

//тут ваше мыло на блоггере
//Настройки > Электронная почта > Адрес электронной почты Blogger
mail(’robocop.0156545@blogger.com‘, $subject, $message); 
?>

Путь к скрипту добавляете в крон и ставите время когда будут отправлятся письма.
Сколько блогов, столько и файлов с этим скриптом, меняете только кей и адрес мыла.
Все, вставляйте рекламу, ссылки, баннеры и все остальное в ваши блоги.
Скрипт протестирован и готов к использованию

утилитка, для тех у кого нет доступа к крону, мануал внутрях

http://scripts.mydiv.net/dlfile8231_1166-pseudo-cron.html

Простой генератор текстов, Гугл + Марков

August 11, 2007
<?
/*********************************

Text Generator v 0.00002
Сделал nevitas.
ICQ 212928653.
Сначала парсит и скачивает первую десятку гугла,
потом на ее основе генерит
нужное кол-во страниц цепями Маркова.

Пример использования - example.php.

Удачной генерации.
*********************************

/
Error_Reporting(E_ALL & ~E_NOTICE);
class textGenerator
{

/*********************************

Эта функция отвечает за закачку заданного списка
URL с веба. Можете ее править по своим нуждам
(делать через неблокирующие сокеты, если cURL на сервере нет, например)
*********************************

/
function download($urllist)
{
$mh = curl_multi_init();

foreach ($urllist as $i => $url)
{
$conn[$i]=curl_init($url);
curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1);
curl_setopt($conn[$i],CURLOPT_FOLLOWLOCATION,1);
curl_setopt($conn[$i],CURLOPT_MAXREDIRS,2);
curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($conn[$i],CURLOPT_HEADER,0);
curl_multi_add_handle ($mh,$conn[$i]);
}

do
{
$n = curl_multi_exec($mh,$active);
}
while ($active);

foreach ($urllist as $i => $url)
{
$con = curl_multi_getcontent($conn[$i]);
$res[$i]= $con;
// file_put_contents("debug/$i.html",$con);
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
}
curl_multi_close($mh);
   return $res;
}

/*********************************

Эта функция парсит URL с первой страницы гугла по данном запросу.
И качает их функцией download.
*********************************

/
function parse_texts($q)
{
$q = urlencode($q);
$q = ‘http://www.google.com/search?q=‘.$q;
$goo = file_get_contents($q);
$regexp = ‘/<a href=\"?([^\s\"]+)\"? class=l>/’;
preg_match_all($regexp,$goo,$res);
$urllist = array();
for ($i = 0; $i<count($res[1]); $i++)
{
$urllist[] = $res[1][$i];
}

$ar = $this->download($urllist);
// var_dump($urllist);
return $this->clear_up_texts($ar);
}

/*********************************

Эта функция чистит массив с текстами от тегов для оформления текста.
Чтобы из него выжать как можно больше именно текста, подходящего для источника
генерации.
*********************************

/

function clear_up_texts($texts)
{
$tags = array(’A', ‘ABBR’, ‘ACRONYM’, ‘ADDRESS’, ‘AREA’, ‘B’, ‘BDO’, ‘BIG’, ‘BLOCKQUOTE’, ‘BR’, ‘CITE’, ‘CODE’, ‘DEL’, ‘DFN’, ‘EM’, ‘EMBED’, ‘H1′, ‘H2′, ‘H3′, ‘H4′, ‘H5′, ‘H6′, ‘HR’, ‘I’, ‘IMG’, ‘INS’, ‘LI’, ‘MAP’, ‘MARQUEE’, ‘OL’, ‘P’, ‘PRE’, ‘Q’, ‘SAMP’, ‘SMALL’, ‘SPAN’, ‘STRONG’, ‘FONT’, ‘SUB’, ‘SUP’, ‘UL’, ‘VAR’, ‘TT’);

$res = array();
foreach ($texts as $con)
{
$con = html_entity_decode($con);
foreach ($tags as $tag)
{
$regexp = "/<\/?".$tag."[^>]*>/i";
$con = preg_replace($regexp,"",$con);
}
$regexp = "/<head.+<\/head>/i";
$con = preg_replace($regexp,"",$con);
$regexp = "/<script[^<]+<\/script>/i";
$con = preg_replace($regexp,"",$con);
$regexp = "/<style[^<]+<\/style>/i";
$con = preg_replace($regexp,"",$con);
$regexp = "/\s+/";
$con = preg_replace($regexp," ",$con);
$con = strtolower($con);
$res[] = $con;
}
return $res;
}

/*********************************

Эта функция собственно генерить тексты из массива исходных текстов.
*********************************

/

function generate($data, $words_co,$pages_co)
{
$result = array();
$content = "";

foreach ($data as $con)
{
$regexp = "/<[^>]+>/";
$res = preg_split($regexp,$con);
$m = 0;
foreach ($res as $kusok)
{
if (strlen($kusok)>$m)
{
$m = strlen($kusok);
$ms1 = $kusok;
}
}
$m = 0;
foreach ($res as $kusok)
{
if ((strlen($kusok)>$m)&&($kusok!=$ms1))
{
$m = strlen($kusok);
$ms2 = $kusok;
}
}
$itog = strtolower("$ms1 $ms2");
$content.="$itog ";
}
$regexp = "/[^a-z0-9]+/";
$content = preg_replace($regexp," ",$content);
$regexp = "/\s+/";
$temp = preg_split($regexp,$content);
$words = array();
for ($i = 0; $i<count($temp)-1; $i++)
{
if (!$words[$temp[$i]]) $words[$temp[$i]] = array();
$words[$temp[$i]][] = $temp[$i+1];
}

for ($i = 0; $i<$pages_co; $i++)
{
$r = rand(0,count($temp));
$w = $temp[$r];
$con = "";
for ($j = 0; $j<$words_co; $j++)
{
$r = rand(0,count($words[$w])-1);
$word = $words[$w][$r];
$w = $word;
$capit = false;
$r = rand(0,1000);
if (($r>100)&&($r<180)) $capit = true;
if ($capit)
{
$con.=".";
$word[0] = strtoupper($word[0]);
}
$con.=" $word";
}
$result[] = $con;
}
return $result;
}

}

?>

 
 
 
 И пример использования:
 /*********************************
Text Generator v 0.00002
Сделал nevitas.
ICQ 212928653.

Файл - пример использования.
Использование: вызываете из своего скрипта функцию
$gen->generate(запрос_в_гугл,количество_слов_на_страницу,количество_страниц_необходимых);
Например:
$gen->generate("windows articles",300,5);
И эта функция возвращается массив с текстами нужной длины.
   Предварительно надо создать, естественно, объект $gen:
   $gen = new textGenerator();

Т.о. пример вернет массив из 5-ти элементов по 300 слов в каждом элементе.
*********************************

/

include(’textgenerator.class.php’);
$gen = new textGenerator();
$data = $gen->parse_texts("windows article");
$texts = $gen->generate($data,500,5);

foreach ($texts as $text)
{
echo $text;
echo "<br><hr><br>";
}

 
 
 http://www.umaxforum.com/topic/3/23092/