Ответов: 2 Просмотров: 257
|
Здравствуйте Други!
Прошу помочь в решении проблемы.
Знания поверхностные и поэтому использовал всю свою скудную "библиотеку" так и не смог найти решение.
Имеется функция вывода случайной строки из файла:
PHP:
скопировать код в буфер обмена
function RandLine($num,$s,$fileName){ $output = ""; for ( $i = 0; $i < $num; $i++ ) { do { $arr[] = $rand; } return $output; } ****************Изменить этот кусок кода******************** function GenTheText( $t ) { while ( preg_match( '#\{([^\{\}]+)\}#i', $t, $m ) ) { } return $t; } $str=''; *********************************************************** function mb_ucfirst($str) { } $public = RandLine($num = 1,$s = "", $dir."public.txt"); $attach = "img/".$public.".txt"; $attachments = RandLine($num = $rand36,$s = ", ", $attach); $text = GenTheText($randtext); echo $public."<br/>".$attach."<br/>".$attachments."<br/>".$text; $ch = curl_init('https://api.vk.com/method/wall.post'); curl_setopt ($ch, CURLOPT_USERAGENT , 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3'); curl_setopt ($ch, CURLOPT_REFERER , 'https://api.vk.com/method/wall.post'); curl_setopt ($ch, CURLOPT_COOKIEJAR , $dir.'cookie.txt'); curl_setopt ($ch, CURLOPT_POSTFIELDS , 'owner_id=-'.$public.'&v=5.28&access_token='.$access_token.'&attachments='.$attachments.'&message='.$text); echo "\n".'Login OK'."\n".'[result ===8<===>'."\n".$result."\n".'<===>8=== result]'."<br/>\n"; echo "http://vk.com/public".$public.""; ?>
Но эта функция имеет недостаток по ограничению количества символов в 30 тыс.
Пример:
{привет|здравствуй|как дела|.....}-30 тыс.
При добавлении вариантов слов или словосочетаний приходит ответ:
Compilation failed: regular expression is too large at offset 291712 in C:\OpenServer\OSPanel\domains\ut316\send.php on line 31
Если возможность уйти от формата {|} и перейти на формат:
текст1
текст2
текст3
.....
Необходимо брать случайную текстовую строку из файла объемом хотя бы 1 мб
Текствый файл находиться в папке text |