Не создает файлы и не записывает в меню?

Подскажите пожалуйста почему не создаются отдельные файлы и не записывается в меню?
Есть определенная функция и результат нужно записать в отдельный файл, а также в меню. Если в файл создается так в отдельный файл не хочет.

Вариант 1 не работает
<?php
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

header('Content-Type: text/html; charset=UTF-8');

include_once('functions_url.php');

include_once('functions.php');
require_once('config.php');

set_time_limit(0);



	//////////////////////////////////////////////
function banned_words($string){
	$words = file('bad_words.txt');
	 foreach($words as $word){
	  // обезопаснивание слова дл¤ регул¤рки
	  $find = array('\\', '^', '$', '(', ')', '<', '[', '{', '|', '>', '.', '*', '+', '?', '/');
	  $replace = array('\\\\', '\^', '\$', '\(', '\)', '\<', '\[', '\{', '\|', '\>', '\.', '\*', '\+', '\?', '\/');
	  $word = str_replace($find, $replace, $word);
	  $word = trim($word);
		
	  // слово целиком (точное), т.е. „»—“ќ слово из списка (без префиксов и суффиксов)
	  //if(!empty($word) and preg_match('/\W'.$word.'\W/Uism', $string)) return true;

	  // вообще вхождение (неточное), т.е. crackZ, crackS и т.п.
	 	 
	 //if(!empty($word) and preg_match('/'.$word.'/Uism', $string)) return true;
	 if(!empty($word) and preg_match('/'.$word.'/i', $string)) return true;
	 
	 }
	 return false;
} //end of function	
///////////////////////////////////////////////////////////////////////////
//---------цикл по файлам---------------------------


foreach (glob("input/*.txt") as $file) {
	
	while (1>0) {
		$bk=filesize($file);
		if($bk==0) {
			//var_dump($bk);
			break; //если в файле закончились кеи, переходим к другому
		}
		$k1=getLastStr($file,true,1); //берем строку с кеем из текущего файла
		
		if(empty($k1)) break;
		
		$k1 = trim($k1);
		
		if(!banned_words($k1)) { //если слова нет в "банном списке" (файл bad_words.txt), то добавляем его в базу
			$k2=mb_ucfirst($k1);
			
			$slovo=$k1;
			
			//Получаем картинки
			if($engine=='bing') preg_match_all('!(?<=murl&quot;:&quot;).*?(?=&quot;)!siu', get_image_bing($slovo), $kartinushki);
			
			if($engine=='yandex') {
				preg_match_all('!(?<=img_url=).*?(?=&)!siu', get_image_yandex($slovo), $kartinushki);
				for($c=0;$c<count($kartinushki[0]);$c++) $kartinushki[0][$c]=urldecode($kartinushki[0][$c]); 
			}
																	
			//Получаем заголовки и описания из Бинга по нашему кею
			$aa=get_rss_bing($slovo);
			
			//var_dump($aa);
			
			preg_match_all('/(?<=<item><title>).*?(?=<)/', $aa, $titles);
			preg_match_all('/(?<=<description>).*?(?=<)/', $aa, $descriptions);
			preg_match_all('/(?<=<link>).*?(?=<)/', $aa, $urls1);
			unset($descriptions[0][0]);
			$urls2=array_slice($urls1[0],2);
			$urls2 = @array_unique($urls2);
			
			$big='';
						
			$ii=0;
			foreach($urls2 as $url) {
				if(!banned_words($url)){
					if($ii>$howmany) break;
					//echo $url;
					$con=_get_url_new($url);
					//echo $con;
					$big.=$con; //набираем тексты с сайтов в один большой текст
					$ii++;
				}	
			}
			
			//var_dump($big);
			//echo '<hr>';
			
			
			if(empty($kartinushki[0][0])) continue; //если по кею нет картинки, пропускаем этот кей

			/////////Формируем короткую новость
			$pred='<img src="'.$kartinushki[0][0].'" alt="'.$titles[0][0].'" class="kart1"><br>';
			if(!empty($descriptions[0][1])) {
				$pred.=ochist($descriptions[0][1]).'.';
			}	
			
			////////Формируем полную новость
			
			$full='';
			
			$full=$big; // кладем в полную новость спаршенный текст
			
			$kolvo=mt_rand($minimages,$maximages); $vsego=count($kartinushki[0]); if($kolvo>$vsego) $kolvo=$vsego;
																			
			if(!empty($vsego)) {
				for($i=0;$i<$kolvo;$i++) {
					$imgurl=$kartinushki[0][$i];
						if(!empty($imgurl)) {
							if(isset($titles[0][$i])) { $alt=ochist($titles[0][$i]); } else $alt='';
							if(isset($descriptions[0][$i])) { $desc=ochist($descriptions[0][$i]); } else $desc='';
							$full.='<img src="'.$imgurl.'" alt="'.$alt.'" class="kart2"><br>';
							$full.=$alt.'.<br>';
						}
				}
			}	
			
			$full.=(youtube($slovo));  //вставляем ролик из youtube по текущему кею
			
			if($hyperpoisk==1&&$zapret==0) {
							
				$full.='<div class="clearfix"></div>';
				$full.='<div style="padding: 10px;">Тэги:';
				$mass=array_unique($titles[0]);
				foreach($mass as $tit) {
					$tit=ochist($tit);						
					if(!empty($tit)&&!banned_words($tit)) {
						//$full.='<a href="/?'.$poisk.'='.urlencode($tit).'">'.$tit.'</a>,';
						$full.=$tit.', ';
					}	
				}
				$full.='</div>';
			}
			
			//////////////////////////////////////////////////////////////////////////
			if($gug==1) $prefix=mt_rand(1111111,9999999).'-';
			else $prefix='';
						
			$url1=$prefix.translit($k1).'.html';
			
			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//записываем
//////////////////////////////////////////////////////
				
				//вариант 1  не работает
				
		$dir = dir ("full/");
		while (false !== ($entry = $dir->read()))
		{
			if (preg_match("/[0-9].php/", $entry))
			{
				$nums[] = str_replace (".php", "", $entry);
			}
		}
		if (!isset($nums))
		{
			$num_id = 1;
		}
		else
		{
			sort ($nums);
			$num_id = $nums[count($nums)-1] + 1;
		}


		$content = "<?\r\n\$page_title = '" . $k2. "';\r\n" .
			"\$page_h1 = '" . $k2 . "';\r\n" .
			"\$page_descr = '" . $k2 . "';\r\n" .
			"\$page_keyws = '" . $k2 . "';\r\n" .
			"\$page_4menu = '" . $k2 . "';\r\n\r\n" .
			"\$content = <<< EOT\r\n" . $full . "\r\n" .
			"EOT;\r\n\r\n?>";
			
		if (!function_exists('file_put_contents'))
		{
			function file_put_contents ($filename, $content)
			{
				if ($fp = @fopen($filename, 'w'))
				{
					$result = fwrite($fp, $content);
					fclose ($fp);

					return $result;
				}
				else
				{
					return false;
				}
			}
		}
			
		if (!file_put_contents("full/" . $num_id . ".php", $content,FILE_APPEND )) //отдельный файл статьи
		{
			die ("Ошибка записи");
		}
		else
		{

			
			file_put_contents('data/blog.dat', $num_id.'|||||'.$date.'|||||'.$url1.'|||||'.$k2.'|||||'.$pred."\r\n",FILE_APPEND );// файл меню

		}

			//вариант 2 работает
			////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					// вычисляем номер последней записи_full
		 $file_full = file("data/full.dat");
		$max_full = 0;
		foreach( $file_full as $line)
		{	
			if ( !empty($line) )
			{	
				$elem = explode("|||||",$line);
				if ( $elem[0] > $max_full) $max_full = $elem[0];	
			}
		}
		$max_full++;
	////////////////////////////////////////////////////////////////	
				// вычисляем номер последней записи_blog
		$file_blog = file("data/blog.dat");
		$max_blog = 0;
		foreach( $file_blog as $lines)
		{	
			if ( !empty($lines) )
			{	
				$elems = explode("|||||",$lines);
				if ( $elems[0] > $max_blog) $max_blog = $elems[0];	
			}
		}
		$max_blog++;

            $month = array('1' => 'января','2' => 'февраля','3' => 'марта','4' => 'апреля','5' => 'мая','6' => 'июня','7' => 'июля','8' => 'августа','9' => 'сентября','10' => 'октября','11' => 'ноября','12' => 'декабря');
	        $date=date("d {$month[date('n')]} Y, в H:i");
 //////////////////////////////
			
            file_put_contents('data/full.dat', $max_full.'|||||'.$d.'|||||'.$full."\r\n",FILE_APPEND | LOCK_EX);// файл статьи

			file_put_contents('data/blog.dat', $max_blog.'|||||'.$d.'|||||'.$url1.'|||||'.$k2.'|||||'.$pred."\r\n",FILE_APPEND | LOCK_EX);// файл меню

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
			


				
							
		}
	}	

	echo $file.' - OK<br>';
		

}


echo ('<br>The END!'); 
?>
  • Вопрос задан
  • 235 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Чет мало кода, весь проект нужен, так не понятно. И вопрос слишком простой, никакой интриги. Все ясно, какие ошибки, что работает, что не получается. Не интересно.

PS: Судя по закоментированным var_dump() все же какие то признаки разума у тс присутствуют, однако на какой стадии выходит ошибка посмотреть либо лень, либо не хочет говорить (ибо военная тайна %) ).
file_put_contents: Функция возвращает количество записанных байт в файл, или FALSE в случае ошибки.
Читать не обязательно, да?
1) Проверить пути и права.
2) Проверить контент перед записью
3) Проверить на is_writable
4) проверить что до функции записи когда-либо доходит очередь исполнения.
0) По утрам читать молитву: "Отче наш кремнийорганический, и святой вардамп, пророк его, я буду проверять данные перед отправкой на запись, и буду проверять результат выполнения функций, ибо воид грех, и будет гореть в аду."
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы