Skip to content

Instantly share code, notes, and snippets.

@pha
Created October 31, 2012 14:19
Show Gist options
  • Save pha/3987271 to your computer and use it in GitHub Desktop.
Save pha/3987271 to your computer and use it in GitHub Desktop.
<?php
function createtext($min = 0, $max = 999999999, $kakko = FALSE){
//ログ読み込み
$logfile = "tools4/today.txt";
$log = @file_get_contents($logfile);
$log = explode("\t", $log);
$array_start = unserialize($log[0]);
$array_markov = unserialize($log[1]);
//カギカッコの水増し
if($kakko === TRUE){
for($i=0;$i<5;$i++){
$array_start[] = "「";
}
}
//出だしの単語を決める
$pre1 = $array_start[array_rand($array_start)];
//出だしの3単語を作る
$pre2 = @array_rand($array_markov{$pre1});
$pre3 = @array_rand($array_markov{$pre1}{$pre2});
$suf1 = $array_markov{$pre1}{$pre2}{$pre3}[@array_rand($array_markov{$pre1}{$pre2}{$pre3})];
$string = $pre1.$pre2.$pre3.$suf1;
//文章を組み立てるループ 完成したら抜ける
$i = 0;
while(1){
$pre1 = $pre2;
$pre2 = $pre3;
$pre3 = $suf1;
$suf1 = $array_markov{$pre1}{$pre2}{$pre3}[@array_rand($array_markov{$pre1}{$pre2}{$pre3})];
$string = $string.$suf1;
//末尾が「。」「?」「!」で十分な長さに達してたら抜ける
if (($suf1 == "。" && mb_strlen($string,"UTF8") > $min && mb_strlen($string,"UTF8") < $max) || $suf1 == "?" || $suf1 == "!"){
break;
}
//maxを超えた場合最初の3語をセットし直す もしくは何かエラーの場合 NGワード含む場合
if (mb_strlen($string,"UTF8") > $max || $pre1 == false || $pre2 == false || $suf1 == false || check_text($string) === false){
$rand_keys = array_rand($array_start);
$pre1 = $array_start[$rand_keys];
$pre2 = @array_rand ($array_markov{$pre1});
$pre3 = @array_rand($array_markov{$pre1}{$pre2});
$suf1 = $array_markov{$pre1}{$pre2}{$pre3}[@array_rand($array_markov{$pre1}{$pre2}{$pre3})];
$string = $pre1.$pre2.$pre3.$suf1;
}
}
return $string;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment