Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Ошибка при выполнении функции
цитата
28/03/12 в 16:55
 Lexikon
Вот сам код:


потёр


всё работает когда нет в коде пользовательских функций [getLimitTitle() и getLimitDesc()] с функциями выдает ошибку Fatal error: Cannot redeclare getlimittitle() .... on line 31
Если брать функции и использовать их отдельно, то всё прекрасно работает, как только вставляю в код то ошибка и запущеный цикл выполняется только один раз.
Пол дня убил на разборку и нифига, раньше с такими функциями дело не имел, почитал тексты о таких функциях, вроде всё как нужно, но не работает.

Последний раз редактировалось: Lexikon (28/03/12 в 17:10), всего редактировалось 1 раз
цитата
28/03/12 в 17:00
 Alexandur
Переведи ошибку на русский. А потом вытащи функции за пределы цикла.
цитата
28/03/12 в 17:03
 Swimmer24
два раза декларируется функция, вынеси ее за цикл


<?php

function getLimitTitle($titleMain, $limit) {                                   // Запсукаем функцию для ограничения тайтлов.
$strlen = strlen($titleMain);
      if ($strlen > $limit)
      {
              $titleMain = preg_replace( "/[\r\n\t]/", "", $titleMain );
               $str = '';
               $titleMain = substr( $titleMain, 0, $limit );
               $words = explode( " ", $titleMain );
               $k = count($words) - 1;
               $n = 0;
               while ($n < $k)
            {             
               $str .= $words[$n++].' ';             
               }
            $titleMain = trim($str)."...";
      }
      else
      {
      $titleMain = trim($titleMain);
      }
      return $titleMain;
}

function getLimitDesc($descMain, $limit) {                                   // Запсукаем функцию для ограничения десок.
$strlen = strlen($descMain);
      if ($strlen > $limit)
      {
              $descMain = preg_replace( "/[\r\n\t]/", "", $descMain );
               $str = '';
               $descMain = substr( $descMain, 0, $limit );
               $words = explode( " ", $descMain );
               $k = count($words) - 1;
               $n = 0;
               while ($n < $k)
            {             
               $str .= $words[$n++].' ';             
               }
            $descMain = trim($str)."...";
      }
      else
      {
      $descMain = trim($descMain);
      }
      return $descMain;
}


$width          = $_POST[ 'width' ];
$height          = $_POST[ 'height' ];
$paySite          = $_POST[ 'link' ];
$cPaySite          = urlencode( $paySite );
$expData          = "expdata.dat";
$keysFile         = "keys.txt";   
$tagsFile         = "tags.txt";   
$seperated       = $_POST[ 'seperated' ];
$impData          = $_POST[ 'exdata' ];
$face             = file_get_contents("embed.tpl");
$lines          = explode( "\n", $impData );
$count          = count( $lines );


   for( $i = 0; $i < $count; $i += 1 )
   {
$content = $face;
list($flv, $img, $titleMain, $descMain) = explode( $seperated, stripslashes($lines[ $i ]) );

   // ----  Start: Обработка Title ----
   
$titleMain       = str_replace("&", "and", $titleMain);                         // Заменяем '&' на 'and'.
$titleMain       = preg_replace("/[^A-Za-z0-9\s-!.,:;?']/", "", $titleMain );       // Удаляем лишнии символы из текста.
$fileName          = preg_replace( '/\s+/', '-', trim( preg_replace("/[^A-Za-z0-9\s]/", "", $titleMain ) ) ); // Удаляем символы кроме Пробела Лат. букв и цифр, заменяем пробелы на тире.


$titleTP          = getLimitTitle($titleMain, 36);
$titleEmbed       = getLimitTitle($titleMain, 70);

   // ----  End: Обработка Title ----
   
// ----  Start: Обработка Desccription ----

$descMain = str_replace("&", "and", $descMain);                         // Заменяем '&' на 'and'.
$descMain = preg_replace("/[^A-Za-z0-9\s-!.,:;?']/", "", $descMain );       // Удаляем лишнии символы из текста.

$metaDesc          = getLimitDesc($descMain, 120);
$embedDesc       = getLimitDesc($descMain, 300);

// ----  End: Обработка Desccription ----

// ----  Start: Получение случайноко киворда ----

    $quote = file( $keysFile );
    srand((double)microtime()*1000000);
    $keyWord = $quote[rand(0,count($quote)-1)];

// ----  End: Получение случайноко киворда ----

// ----  Start: Созание строки тегов ----

$tags = ""; // Объявляем переменную пустой.
for( $z = 0; $z<=3; $z++ ) // Запускаем цикл.
{
      $quote = file( $tagsFile );
    srand((double)microtime()*1000000);
    $rand_tags = $quote[rand(0,count($quote)-1)];
    $rand_tags = trim($rand_tags); // Убираем возможные пробелы из начала и конца строк.
    $tags .= $rand_tags.", "; // Разделяем наращиваемые слова запятыми.
}
$tags = substr($tags, 0, strlen($tags) - 2)."."; // Заменяем последнии два символа (запятая, пробел) на одну точку.

// ----  End: Созание строки тегов ----

      // с помощью preg_replace() выполняем поиск и замену по РЕГУЛЯРНОМУ ВЫРАЖЕНИЮ в файле-шаблоне заданом в переменной $content
    $content = str_replace('{flv}', $flv, $content);
    $content = str_replace('{img}', $img, $content);
    $content = str_replace('{titleMain}', $titleMain, $content);
    $content = str_replace('{keyWord}', $keyWord, $content);
    $content = str_replace('{$descMain}', $descMain, $content);
    $content = str_replace('{width}', $width, $content);
    $content = str_replace('{height}', $height, $content);
    $content = str_replace('{tags}', $tags , $content);
    $content = str_replace('{cPaySite}', $cPaySite , $content);
    $content = str_replace('{paySite}', $paySite, $content);
    $content = preg_replace("/[\r\n]/", "", $content );
     
    // Открыть текстовый файл
    $f = fopen($expData, "a");
    // Записываем строку данных (каждая запись с новой строки)
    fwrite($f, $content. "\r\n");
    // Закрыть текстовый файл
    fclose($f);
   }

echo "Done!";
?>

Последний раз редактировалось: Swimmer24 (28/03/12 в 17:05), всего редактировалось 1 раз
цитата
28/03/12 в 17:04
 Lexikon
Фатальная ошибка: Невозможно переопределить getlimittitle ()
это я переводил.
НО а вынос за цикл только добавит ошибок, ибо в цикле та переменная которую использует функция, т.е. за циклом ее не существует, а значит новая ошибка
цитата
28/03/12 в 17:06
 Swimmer24
попробуй сначала )
цитата
28/03/12 в 17:08
 Lexikon
а, всё отлично.
Чет в последнее время глюки, пишу на форум, рекомендуют сделать как делал и всё отлично. Сам делаю тоже самое и хер icon_confused.gif

icon_smile.gif отлично, всем спасибо оценил.


Эта страница в полной версии