@ilya17392

Как записать данные во все файлы?

class yandex {
	private $APIkey = "trnsl.1.1.20190923T121155Z.d14ea508da8b7948.0ab69cefeb964ba55b095a2f135bc84a32281e0a"; //See http://api.yandex.com/translate/doc/dg/reference/translate.xml
	public function translate ($text,$lang) {
	  $t 			= urlencode($text);
	  $url 			= "https://translate.yandex.net/api/v1.5/tr/translate?key=";
	  $url			.= "{$this->APIkey}&format=html&lang={$lang}&text={$t}";
	  if ($xml = simplexml_load_file($url)) {
		return $xml;
	  }
	  else return false;
	} // yandex_trans
}

$handle = fopen("woo.txt", "r");
$str = file_get_contents("woo.txt");
$langs = ["uk", "ru", "pl"];
$format = ".txt";

foreach($langs as $lang){
$filename = "index" . "_" . $lang . $format;

$rp = fopen($filename, "w");
  
    while (($line = fgets($handle)) !== false) {
        $rest = substr($line, 0, 1) === '"';
        if($rest == true ) {
            $word = substr(strstr($line, '='), 1, strlen($line));
                $ya 	= new yandex();
                $txt = $word;
                $trans = $ya->translate($txt, $lang);
                $done = $trans->text;
            
                $query = str_replace($word,$done,$line);
                fwrite($rp , $query);
             }else fwrite($rp, $line);
    }

    fclose($rp);
    }
    fclose($handle);

Записывает измененный перевод только в первый файл, во второй и третий ничего не пишет, но их создает, подскажите в чем дело, пожалуйста
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Какой-то бредовенький код. $str вообще нигде не используется, зачем он вообще?

$langs = ["uk", "ru", "pl"];
$format = ".txt";
foreach($langs as $lang){
   $file = file("woo.txt");
   foreach($file as $string){
       $word = explode('=',$string)[1];
       $word = !empty($word[1]?$word[1]:'';
       if(!empty($word)){
          $ya = new yandex();
          $txt = $ya->translate($word, $lang);
          $txt = $txt->text;
          $query = str_replace($word,$done,$line);
          file_put_content("index" . "_" . $lang . $format, $query,FILE_APPEND);
       }
       else{
             file_put_content("index" . "_" . $lang . $format, $string,FILE_APPEND);
       }
   }
}
Ответ написан
Комментировать
SagePtr
@SagePtr
Еда - это святое
Потому что вы один раз открываете "woo.txt" и один раз прогоняете его до конца.
На последующих итерациях цикла - он заново читаться не будет, т.к. его указатель находится в конце. Сбрасывайте указатель в начало на каждой следующей итерации: fseek.
Ну или целиком всё перепишите нормально, без извратов, как куратор выше посоветовал)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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