@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.
Ну или целиком всё перепишите нормально, без извратов, как куратор выше посоветовал)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
от 300 000 до 500 000 ₽
20 апр. 2024, в 13:23
1000 руб./за проект
20 апр. 2024, в 12:50
30000 руб./за проект
20 апр. 2024, в 12:01
20000 руб./за проект