Пришёл к тому что надо собирать свою базу запросов, грабить и можернизировать тексты, и на основе своей базы делать дорвеи .
Во время поиска полезной информации о дорвеях, набрёл на скрипт который генерирует текст по алгоритму цепей Маркова .
Вот он:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
Class MarkovChains
{
var $prepared = array ( ) ;
function MarkovChains
( $source ) {
$source = strtolower ( $source ) ;
$source = str_replace ( array ( "? " , "! " ) , "." , $source ) ;
$source = str_replace ( array ( " -" , "- " , "\t " , "\r " , "\n " , "|" , "&" , '\' , '/' , " :" , " ;" , "©" , "•" ) , ' ' , $source ) ;
$source = str_replace ( array ( ")" , "(" , "]" , "[" , "'" , "\" " , '*' , '•' , '~' , '{' , '}' ) , '' , $source ) ;
$source = str_replace ( " ," , "," , $source ) ;
$source = preg_replace ( "~(\s+\d{1,2}\s+)|(\w*\.\w+)~" , " " , $source ) ;
$source = preg_replace ( "~\s+~" , " " , $source ) ; $sentens = explode ( '. ' , $source ) ;
$count_sentens = count ( $sentens ) ;
for ( $j = 0 ; $j & lt
; $count_sentens ; ++ $j ) {
$sentens [ $j ] = explode ( ' ' , $sentens [ $j ] ) ;
$count_words = count ( $sentens [ $j ] ) - 1 ;
for ( $i = 0 ; $i & lt
; $count_words ; ++ $i ) {
$prefix = $sentens [ $j ] [ $i ] ;
$this -& gt
; prepared
[ $prefix ] [ ] = $sentens [ $j ] [ $i + 1 ] ;
}
}
$keys = array_keys ( $this -& gt
; prepared
) ;
foreach ( $keys as $key ) {
$this -& gt
; prepared
[ $key ] = array_unique ( $this -& gt
; prepared
[ $key ] ) ;
}
}
function GenerateText
( $size ) {
$result_count = 0 ;
for ( $j = 0 ; $result_count & lt
; $size ; ++ $j ) {
$prev = array_rand ( $this -& gt
; prepared
) ;
$num = mt_rand ( 5 , 12 ) ;
for ( $i = 0 ; $i & lt
; $num ; ++ $i ) {
$sents [ $j ] [ $i ] = $prev ;
++ $result_count ;
$p = $this -& gt
; prepared
[ $prev ] [ mt_rand ( 0 , count ( $this -& gt
; prepared
[ $prev ] ) - 1 ) ] ;
if ( $p == '' ) $p = array_rand ( $this -& gt
; prepared
) ;
$prev = $p ;
if ( $prev == '' ) break 2 ;
}
}
foreach ( $sents as $sent ) {
$count_word = count ( $sent ) ;
if ( $count_word & lt
;= 2 ) continue ;
if ( strlen ( $sent [ $count_word - 1 ] ) & lt
; 4 ) unset ( $sent [ $count_word - 1 ] ) ;
$sent [ $count_word - 2 ] = rtrim ( $sent [ $count_word - 2 ] , ",:;" ) ;
$sent [ $count_word - 1 ] = rtrim ( $sent [ $count_word - 1 ] , ",:;" ) ;
$output .= ucfirst ( implode ( ' ' , $sent ) ) . '. ' ;
}
$output = str_replace ( ' .' , '.' , $output ) ;
return $output ;
}
}
?
& gt
;
Скачать скрипт на php для генерирования текста по правилам цепей Маркова
Цепи Маркова (782 байт, Скачено: 1,036)
Пример использования
1 2 3 4 5
$source = "тут текст" ;
//file_get_contents("text.txt");
$markov = new MarkovChains
( $source ) ;
$result = $markov -& gt
; GenerateText
( 500 ) ;
echo $result ;
(111 votes, average: 4.96 out of 5)
Loading ...
Tags: php , непрерывные цепи маркова , Цепи Маркова , цепи маркова генератор
Раньше передо мной вставал вопрос глянуть на исходники некоторых платных php скриптов, и к своему сожалению, я не редко натыкался на файлы закодированые Zend Encoder'ом.
Всегда искал декодер zend'а, но нигде не мог его найти. Недавно не торренте наткнлуся на него, скачал и забыл.
Сегодня опробывал его и был действительно приятно удивлён. Огромный файл с функциями от одного известного портала, он раскодил, я предполагаю до конца. В конец файла правда лабуда какая то появилась. Взял файл поменьше и о чудо... весь код раззенден. Прога толи на японском, толи на китайском, всё в иероглифах, но думаю разберётесь, тем всего то четыре кнопки: выбрать папку, выбрать файл, разкодить, и выход.
скачать Декомпилятор DeZender 5 (depositfiles)
скачать Декомпилятор DeZender 5 (letitbit)
скачать Декомпилятор DeZender 5 (vip-file)
(2 votes, average: 1.00 out of 5)
Loading ...
Tags: dezend , dezender , php , PHP decoder , PHP decompiler , php zend , zend , скачать dezender
Вот код для включений отображение ошибок php:
1 2 3 4
// отображение ошибок
ini_set ( "display_errors" , "1" ) ;
ini_set ( "display_startup_errors" , "1" ) ;
ini_set ( 'error_reporting' , E_ALL ) ;
Вот для выключения отображение ошибок:
1 2 3
// отображение ошибок
ini_set ( "display_errors" , "0" ) ;
ini_set ( "display_startup_errors" , "0" ) ;
А вот пример отображения ошибок только для вас (определяем по ip):
1 2 3 4 5 6 7 8 9 10
// отображение ошибок
if ( $_SERVER [ 'REMOTE_ADDR' ] == '127.0.0.1' ) {
// если это ваш ip
ini_set ( "display_errors" , "1" ) ;
ini_set ( "display_startup_errors" , "1" ) ;
} else {
// если нет
ini_set ( "display_errors" , "0" ) ;
ini_set ( "display_startup_errors" , "0" ) ;
}
(Ещё нет оценок)
Loading ...
Tags: php , Отображаем ошибки , ошибки php
В самом начале моего знакомства с php и mysql я натолкнулся на такую проблему, как знаки вопросов вместо данных на кириллице. Оказалось что такой недуг можно победит если сразу после строк подключения к базе данных mysql вписать следующий код:
1 2
//Подменяем кодировку
$result = mysql_query ( "SET NAMES cp1251" ) ;
Я думаю многие из начинающих писать на php сталкиваются с такой проблемой.
(Ещё нет оценок)
Loading ...
Tags: mysql , php , знаки вопросов , кодировка cp1251
Столкнулся с проблемой отображения дат на своём новеньком VDS . Скрипты упорно выдовали дату согласно временной зоне которая установлена по умолчанию на сервере. Так как раньше у меня таких проблем не возникало, пришлось обратитья к гуглу.
В результате решение было найдено:
1 2
// задаём временную зону
date_default_timezone_set( "Europe/Moscow" ) ;
И только после этого php стал отдавать мне текущую дату в нужной мне временной зоне.
(Ещё нет оценок)
Loading ...
Tags: date_default_timezone_set , Europe/Moscow , ini_set , php , временная зона , время
Представляю вашему вниманию класс на php который реализет работу с протоколом HTTP 1.1. Позволяет отправлять как GET так и POST запросы из скриптов на php. Поддерживает отправку запросы через прокси сервер.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232
<?
/*
* Класс реализует работу с протоколом HTTP 1.1
* http://gregor.su
* 2008 © Григорий Скопин
*/
class HttpClient
{
/*** @var string адрес прокси-сервера (если используется)*/
var $sProxyAddress = NULL ;
/*** @var integer порт прокси-сервера (если используется)*/
var $iProxyPort = NULL ;
/*** @var array массив строк - заголовков запроса HTTP*/
var $aRequestHeaders ;
/*** @var array массив строк - заголовков ответа HTTP*/
var $aResponseHeaders = array ( ) ;
/*** @var boolean сжимать ли контент. Сжатие происходит только при наличии модуля ZLIB*/
var $bCanCompress = false ;
/*** Конструктор*/
function wkHttpClient
( ) {
$this -> aRequestHeaders = array (
'User-Agent' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; WebMoney Advisor; MRA 5.2 (build 02405)'
, 'Pragma' => 'no-cache'
, 'Expires' => date ( "r" )
, 'Connection' => 'Keep-Alive'
) ;
}
/*
* Функция устанавливает заголовки, переопределяя установленные ранее.
* @param array $aHeaders [in] массив заголовков
* @return integer true
*/
function SetHeaders
( $aHeaders ) {
$this -> aRequestHeaders = array_merge ( $this -> aRequestHeaders , $aHeaders ) ;
return true ;
}
/*
* Функция устанавливает параметры Basic-аунтификации HTTP
* @param string $sUser [in] username
* @param string $sPassword [in] password
* @return integer true
*/
function SetAuthParams
( $sUser , $sPassword ) {
$tmp = base64_encode ( "$sUser :$sPassword " ) ;
$this -> SetHeaders ( array ( 'Authorization' => 'Basic ' . $tmp ) ) ;
return true ;
}
/* Функция устанавливает адрес Proxy
* @param string $sAddress [in] адрес прокси-сервера
* @param integer $iPort [in] порт прокси-сервера
* @return integer true
*/
function SetProxy
( $sAddress , $iPort = 8080 ) {
$this -> sProxyAddress = $sAddress ;
$this -> iProxyPort = $iPort ;
return true ;
}
/*
* Функция устанавливает параметры Proxy-аунтификации
* @param string $sUser [in] username
* @param string $sPassword [in] password
* @return integer true
*/
function SetProxyAuthParams
( $sUser , $sPassword ) {
$tmp = base64_encode ( "$sUser :$sPassword " ) ;
$this -> SetHeaders ( array ( 'Proxy-Authorization' => 'Basic ' . $tmp ) ) ;
return true ;
}
/*
* Функция выполняет запрос HTTP 1.1 GET
* @param string $sHost [in] доменное имя сервера (Пример: ya.ru)
* @param string $sUrl [in] путь к файлу на сервере (Пример: /index.html)
* @param string $iPort [in] порт сервера, опциональный параметр
* @return возвращает содержимое страницы или false
*/
function Get
( $sHost , $sUrl , $iPort = 80 ) {
$req_str = "GET /$sUrl HTTP/1.0\r \n "
. "Host: $sHost \r \n " ;
if ( is_array ( $this -> aRequestHeaders ) ) {
foreach ( $this -> aRequestHeaders as $k => $v ) {
$req_str .= "$k : $v \r \n " ;
}
}
// включить сжатие, если поддерживается
$bCompress = ( boolean
) extension_loaded ( 'zlib' ) && $this -> bCanCompress ;
if ( $bCompress ) {
$req_str .= "Accept-Encoding: gzip,deflate\r \n " ;
}
$req_str .= "\r \n " ;
// открываем сокет
$sock_errno = 0 ;
$sock_errstr = '' ;
// выбираем, работать напрямую или через прокси
if ( empty ( $this -> sProxyAddress ) ) {
$h = $sHost ;
$p = $iPort ;
} else {
$h = $this -> sProxyAddress ;
$p = $this -> iProxyPort ;
}
echo "p=" . $p . "<br>" ;
$sock = @ fsockopen ( $h , $p , $sock_errno , $sock_errstr , 30 ) ;
if ( FALSE === $sock ) return false ;
// посылаем заголовок HTTP
$res = fwrite ( $sock , $req_str ) ;
if ( strlen ( $req_str ) != $res ) return false ;
//читаем построчно заголовок ответа HTTP
$bEndOfHeader = false ;
while ( ! feof ( $sock ) && ! $bEndOfHeader ) {
$s = fgets ( $sock , 1024 ) ;
$this -> aResponseHeaders [ ] = $s ;
// Смотим размер данных
$param = stristr ( $s , 'Content-length: ' ) ;
if ( is_string ( $param ) ) {
$content_length = ( integer
) substr ( $s , strlen ( 'Content-length: ' ) ) ;
}
// Смотим метод компрессии
$param = stristr ( $s , 'Content-encoding: ' ) ;
if ( is_string ( $param ) ) {
$compress_method = trim ( substr ( $s , strlen ( 'Content-encoding: ' ) ) ) ;
}
// признак конца заголовка
if ( "\r \n " == $s ) $bEndOfHeader = true ;
}
// читаем данные
$res = '' ;
while ( ! feof ( $sock ) ) {
$tmp = fread ( $sock , 128 ) ;
$res .= $tmp ;
}
// закрываем сокет
fclose ( $sock ) ;
// если контент сжат расжать
if ( isset ( $compress_method ) ) {
switch ( $compress_method ) {
case 'gzip' :
$res = gzuncompress ( $res ) ;
break ;
case 'deflate' :
$res = gzinflate ( $res ) ;
break ;
default :
return 1 ;
}
}
return $res ;
}
/*
* Функция выполняет запрос HTTP 1.1 POST
* @param string $sHost [in] доменное имя сервера (Пример: ya.ru)
* @param string $sUrl [in] путь к файлу на сервере (Пример: ya.ru)
* @param string $iPort [in] порт сервера, опциональный параметр
* @return возвращает содержимое страницы или false
*/
function Post
( $sHost , $sUrl , $iPort = 80 , $PostData ) {
$len = strlen ( $PostData ) ;
$req_str = "POST /$sUrl HTTP/1.0\r \n "
. "Host: $sHost \r \n "
. "Content-Type: application/x-www-form-urlencoded\r \n "
. "Content-Length: $len \r \n \r \n "
. $PostData ;
if ( is_array ( $this -> aRequestHeaders ) ) {
foreach ( $this -> aRequestHeaders as $k => $v ) {
$req_str .= "$k : $v \r \n " ;
}
}
// включить сжатие, если поддерживается
$bCompress = ( boolean
) extension_loaded ( 'zlib' ) && $this -> bCanCompress ;
if ( $bCompress ) {
$req_str .= "Accept-Encoding: gzip,deflate\r \n " ;
}
$req_str .= "\r \n " ;
// открываем сокет
$sock_errno = 0 ;
$sock_errstr = '' ;
// выбираем, работать напрямую или через прокси
if ( empty ( $this -> sProxyAddress ) ) {
$h = $sHost ;
$p = $iPort ;
} else {
$h = $this -> sProxyAddress ;
$p = $this -> iProxyPort ;
}
echo "p=" . $p . "<br>" ;
$sock = fsockopen ( $h , $p , $sock_errno , $sock_errstr , 30 ) ;
echo "<br>" . htmlspecialchars ( $sock ) . "<br>" ;
if ( FALSE === $sock ) return false ;
// посылаем заголовок HTTP
$res = fwrite ( $sock , $req_str ) ;
if ( strlen ( $req_str ) != $res ) return false ;
// читаем построчно заголовок ответа HTTP
$bEndOfHeader = false ;
while ( ! feof ( $sock ) && ! $bEndOfHeader ) {
$s = fgets ( $sock , 1024 ) ;
$this -> aResponseHeaders [ ] = $s ;
// Смотим размер данных
$param = stristr ( $s , 'Content-length: ' ) ;
if ( is_string ( $param ) ) {
$content_length = ( integer
) substr ( $s , strlen ( 'Content-length: ' ) ) ;
}
// Смотим метод компрессии
$param = stristr ( $s , 'Content-encoding: ' ) ;
if ( is_string ( $param ) ) {
$compress_method = trim ( substr ( $s , strlen ( 'Content-encoding: ' ) ) ) ;
}
// признак конца заголовка
if ( "\r \n " == $s ) $bEndOfHeader = true ;
}
// читаем данные
$res = '' ;
while ( ! feof ( $sock ) ) {
$tmp = fread ( $sock , 128 ) ;
$res .= $tmp ;
}
// закрываем сокет
fclose ( $sock ) ;
// если контент сжат расжать
if ( isset ( $compress_method ) ) {
switch ( $compress_method ) {
case 'gzip' :
$res = gzuncompress ( $res ) ;
break ;
case 'deflate' :
$res = gzinflate ( $res ) ;
break ;
default :
return 1 ;
}
}
return $res ;
}
}
?>
Вот тут он же в архиве
http_client.inc.rar (2 Кб, Скачено: 519)
Вот пример использования для GET и POST запросов:
1 2 3 4 5 6 7 8 9 10
<?
//Подключаем файл
include ( "http_client.inc.php" ) ;
//Инициализируем класс
$Soc = new HttpClient( ) ;
//Пример отправки GET запроса
$sContentGet = $Soc -> Get ( "ya.ru" , "index.html" ) ;
//Пример отправки POST запроса
$sContentPost = $Soc -> Post ( "blogus.ru" , "/add/default.aspx" , 80 , $post ) ;
?>
В следующих статьях я на примерах покажу как можно использовать данный класс.
(Ещё нет оценок)
Loading ...
Tags: get на php , php , post на php , запрос