PDA

View Full Version : سوال: خطای Notice: Undefined offset: 1



artablog
دوشنبه 04 شهریور 1392, 09:12 صبح
سلام
یه اسکریپت دارم خطای Notice: Undefined offset: 1 in C:\wamp\www\translator.php on line 4 میده معنی این خطا چی هست و چطور رفع کنم. (نمیخوام با گذاشتن @ در خط 4 خطا را رفع کنم)

<?php
function getstring($a,$b,$c){
$y = explode($b,$a);
$x = explode($c,$y[1]);
return $x[0];
}
// Check if form has been submitted
if($_REQUEST['txt']){
ini_set("max_execution_time", 0); // no time-outs!
ignore_user_abort(true); // Continue downloading even after user closes the browser.
//$text = stripslashes($_REQUEST['txt']);
$text = $_REQUEST['txt'];
//$text = str_replace(' ', '+', $text);
$lang1 = $_REQUEST['lang1'];
$lang2 = $_REQUEST['lang2'];
echo translate($text,$lang1,$lang2);
}
else { echo "<center>You can't access this file directly! redirecting to home page now.</center>";
?><meta http-equiv="REFRESH" content="3;url=index.php"><?
exit;}
function translate($text,$lang1,$lang2){

$query = "js=n&prev=_t&hl=en&ie=UTF-8&text=$text&file=&sl=$lang1&tl=$lang2";

$ch=curl_init();
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_URL, "http://translate.google.com/?");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0");
curl_setopt($ch, CURLOPT_ENCODING , "UTF-8");
$output = curl_exec($ch);
// echo $output;
curl_close($ch);
if ($lang2=="ar" || $lang2=="iw") {
$body = getstring($output, "overflow:auto\">", "</textarea></div>");
if ($body==""){
$body = getstring($output, "'#fff'\">", "</span></span></div>");
}
$prefix="<br><br>";
$body=$prefix.$body;
return $body;
//return $output;
}

if ($lang2=="fr") {
$body = getstring($output, "overflow:auto\">", "</textarea></div>");
if ($body==""){
$body = getstring($output, "'#fff'\">", "</span></span></div>");
}
$prefix="<br><br>";
$body=$prefix.$body;
//return $output;
$body = str_replace('&amp;#39;', "'", $body);
return str_replace("é", "é", $body);
}

else {
$body = getstring($output, "overflow:auto\">", "</textarea></div>");
if ($body==""){
$body = getstring($output, "'#fff'\">", "</span></span></div>");
}
$prefix="<br><br>";
$body=$prefix.$body;
return str_replace("é", "é", $body);
//return $output;
}
}
?>

abolfazl-z
دوشنبه 04 شهریور 1392, 09:44 صبح
سلام
میگه اندیس 1 برای متغیر $y تعریف نشده. ورودی هایتون رو چک کنید.
حداقل قبل از خط 4 بنویسید :


print_r($y);

artablog
دوشنبه 04 شهریور 1392, 09:49 صبح
حل نشد . این خطا هم اضافه شد Notice: Undefined variable: y1

abolfazl-z
دوشنبه 04 شهریور 1392, 09:51 صبح
ببخشید اشتباه شد. دوباره کد بالا را بگذارید.

artablog
دوشنبه 04 شهریور 1392, 09:55 صبح
ببخشید اشتباه شد. دوباره کد بالا را بگذارید.
اتفاقا دیدم اشتباه شده عدد 1 را برداشتم بازم حل نشد

abolfazl-z
دوشنبه 04 شهریور 1392, 10:00 صبح
اگر دیدن متغیر $y خالی هست شما باید ورودی هایتون رو چک کنید.
متغیر $b یک جدا کننده برای متغیر $a می باشد و در ادامه $c یک جدا کننده برای اولین اندیس $y می باشد. باید ورودی هایتون رو درست کنید. ورودی هایتون اشتباه است!

abolfazl-z
دوشنبه 04 شهریور 1392, 10:03 صبح
باید ورودی هایتون به این صورت باشه :


echo getstring('a b-2-1-0 c',' ','-');

artablog
دوشنبه 04 شهریور 1392, 10:06 صبح
من مبتدیم اسکریپت را هم من ننوشتم نمیدونم چیکار کنم اون کد هایی بالایی هم که گذاشتم کامل هست لطف کنید خودتون اصلاح کنید
اسکریپت را از اینجا دانلود (http://nikportal.ir/index.zip) کنید

abolfazl-z
دوشنبه 04 شهریور 1392, 11:01 صبح
109731
بفرمایید
اینم یک کلاس خوب و ساده برای ترجمه.

artablog
دوشنبه 04 شهریور 1392, 11:10 صبح
ممنون قبلا این کلاس را از phpclass.org دانلود کرده بودم نمیدونم چطور میتونم یه فرم براش بسازم اسکریپتی که خودم دارم آماده هست فقط اون خطا باید رفع بشه

abolfazl-z
دوشنبه 04 شهریور 1392, 11:36 صبح
دوست عزیز اسکریپتی که شما دارید میاد از صفحه خود گوگل اطلاعات رو دریافت می کنه یعنی یک بار اضافی !(خود صفحه رو از گوگل دانلود میکنه)
این اسکریپتی که من به شما دادم (چند تا اسکریپت را برای شما تست کردم نشد این یکی شد) با API کار میکنه و سرعت دریافت میره بالا.
در ضمن شما برای اینکه بتونید فرم درست کنید باید به برنامه نویسی PHP مسلط باشید.