PDA

View Full Version : اسکریپت گرفتن کاراکتر به کاراکتر کلمه ها و ریختن هر حرف در یک خانه از آرایه



omidmetal90
جمعه 05 خرداد 1391, 15:41 عصر
سلام خدمت اعضا و مدیران سایت خوب برنامه نویس

من یه اسکریپت کوتاه میخوام که از ورودی مثلا یه تکست باکس یه سری کلمه بگیره و بعد از submit کردن این کلمه ها ، حروف به حروف حتی با space بین کلمات در خانه های یک آرایه قرار بگیره

مثلا اگر ورودی این باشه : (if age == "25" then do it) اینا مثال هست هرچیزی میتونه باشه

هر کدوم از کاراکتر هایی که بین پرانتزا هست رو در خانه های یک آرایه قرار بده

ممنون اگر کمکم کنین:افسرده:

Unique
جمعه 05 خرداد 1391, 17:44 عصر
$txt = "it is a long text you asked for.";
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);

print_r($chars);

omidmetal90
جمعه 05 خرداد 1391, 17:57 عصر
$txt = "it is a long text you asked for.";
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);

print_r($chars);



ممنون خیلی خیلی ممنون به خاطر جواب عالی تون

و من دقیقا همینو میخواستم شما چقدر بلدین

:متفکر: یه مشکل دیگه که دارم اینه که حالا اینا که جدا شدن ، یه کاره دیگه هم بکنه

مثلا ما تو یه آرایه یه همچین چیزی داریم:

array(if,while,then,for,else,elseif)

اینا همه کلمات کلیدی ما هستن
من میخوام بگم که اون حروفی که تو آرایه قبلیه قرار دادیم به این صورت باشه که تا موقعی که به space یا همون فاصله نرسیده اون حروف را با کل کلمات آرایه ای که کلمات کلیدی داره مقایسه کنه اگر یکی بود یه پیغام چاپ کنه!

الان میدونم شما میگین چرا کلمات رو به حروف جدا کردی و میخوای با کلمه مقایسه کنی ولی استاد ما میگه که باید حروف به حروف مقایسه صورت بگیره
نمیدونم متوجه این توضیح من شدین یا نه

بازم ممنون که جواب منو دادین:ناراحت:

Unique
جمعه 05 خرداد 1391, 18:42 عصر
$txt = "while it is integer then ...";
$keys = array("if","while","then","for","else","elseif");
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);

$wrd = "";
foreach($chars as $char)
if ($char != " "){
$wrd .= $char;
}else{
if (in_array($wrd,$keys))
echo "[".$wrd."] found !<br>";
$wrd = "";
}


الان میدونم شما میگین چرا کلمات رو به حروف جدا کردی و میخوای با کلمه مقایسه کنی ولی استاد ما میگه که باید حروف به حروف مقایسه صورت بگیره
امیدوارم روزی برسه که استاد ها وقتی چیزی را نمیدونند نظر ندهند یا اگه درخواست بی منطقی دارند دلیلش را بگویند ، مثلا بگویند برای پیشرفت پیاده سازی الگوریتم و منطق کدنویسی از این قابلیت چشم پوشی میکنیم یا به این روش پیاده کنید.

کد درستش اینه :

$txt = "while it is integer then ...";
$keys = array("if","while","then","for","else","elseif");
$wrds = explode(" ",$txt);

foreach($wrds as $wrd)
if (in_array($wrd,$keys))
echo "[".$wrd."] found !<br>";

omidmetal90
جمعه 05 خرداد 1391, 20:00 عصر
$txt = "while it is integer then ...";
$keys = array("if","while","then","for","else","elseif");
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);

$wrd = "";
foreach($chars as $char)
if ($char != " "){
$wrd .= $char;
}else{
if (in_array($wrd,$keys))
echo "[".$wrd."] found !<br>";
$wrd = "";
}


امیدوارم روزی برسه که استاد ها وقتی چیزی را نمیدونند نظر ندهند یا اگه درخواست بی منطقی دارند دلیلش را بگویند ، مثلا بگویند برای پیشرفت پیاده سازی الگوریتم و منطق کدنویسی از این قابلیت چشم پوشی میکنیم یا به این روش پیاده کنید.

کد درستش اینه :

$txt = "while it is integer then ...";
$keys = array("if","while","then","for","else","elseif");
$wrds = explode(" ",$txt);

foreach($wrds as $wrd)
if (in_array($wrd,$keys))
echo "[".$wrd."] found !<br>";


واییییی ممنون خیلی خیلی لطف کردین

میدونم غیر معقوله که اینطوری باید نوشت ولی برای درس کامپایلر استادمون گفته که یک اسکنر کد بنویسین

در حقیقت این کارا واسه اینه که کاراکتر به کاراکتر درستی کلمات چک بشه و تو یه جدولی بگه که چندتا حروف و چند کلمه کلیدی و عیر کلیدی در این ورودی وجود داره

بازم ممنون خیلی لطف کردین

MMSHFE
شنبه 06 خرداد 1391, 12:32 عصر
عجب استادی دارین که Code Scanner رو گفته با PHP پیاده سازی کنید! خداییش انصاف نیست اگه همه دانشجوهای ایرانی به بهشت نرن!

omidmetal90
شنبه 06 خرداد 1391, 13:44 عصر
عجب استادی دارین که Code Scanner رو گفته با PHP پیاده سازی کنید! خداییش انصاف نیست اگه همه دانشجوهای ایرانی به بهشت نرن!


چرا؟؟؟؟

مگه php چشه؟؟؟

MMSHFE
شنبه 06 خرداد 1391, 14:00 عصر
PHP چیزیش نیست. فقط برای این کارها بهتره از ++C و زبانهایی که دسترسی سیستمی دارن و سرعتشون هم بیشتره استفاده بشه چون این کارها توی بستر وب انجام نمیشه که از یک زبان سمت سرور با کمک وب سرور و... بخوایم استفاده کنیم.

Unique
شنبه 06 خرداد 1391, 18:40 عصر
مشکل استاد های ما یکی دو تا نیست ، 90% این استادها یک پروژه درست و حسابی را تو زندگیشون تجربه نکردن ، فقط مدرک روی مدرک رفتن بالا ، البته خداییش من آزاد درس خوندم ونمیتونم در موزد دانشگاه های دولتی نظری بدم ، اما آزاد توی اکثر دانشگاه هیا ما مشکل سواد استاد و تجربه استاد توی درسی که داره میده وجود داره.

omidmetal90
یک شنبه 14 خرداد 1391, 14:03 عصر
$txt = "while it is integer then ...";
$keys = array("if","while","then","for","else","elseif");
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);

$wrd = "";
foreach($chars as $char)
if ($char != " "){
$wrd .= $char;
}else{
if (in_array($wrd,$keys))
echo "[".$wrd."] found !<br>";
$wrd = "";
}


امیدوارم روزی برسه که استاد ها وقتی چیزی را نمیدونند نظر ندهند یا اگه درخواست بی منطقی دارند دلیلش را بگویند ، مثلا بگویند برای پیشرفت پیاده سازی الگوریتم و منطق کدنویسی از این قابلیت چشم پوشی میکنیم یا به این روش پیاده کنید.

کد درستش اینه :

$txt = "while it is integer then ...";
$keys = array("if","while","then","for","else","elseif");
$wrds = explode(" ",$txt);

foreach($wrds as $wrd)
if (in_array($wrd,$keys))
echo "[".$wrd."] found !<br>";


من یه مشکلی خوردم آقا اگه بتونین کمک کنین خیلی ممنون میشم کدی شما زحمت کشیدین برام نوشتین
خیلی کامله فقط من میخوام وقتی کلمه کلیدی پیدا کرد مثلا نزنه while[found] - while[found] - while[found] ، میخوام بزنه مثلا while 3[found] یعنی 3تا while پیدا کرده به جای اینکه 3بار while رو چاپ کنه ممنون میشم اکر کمکم کنین

H:Shojaei
یک شنبه 14 خرداد 1391, 14:57 عصر
من یه مشکلی خوردم آقا اگه بتونین کمک کنین خیلی ممنون میشم کدی شما زحمت کشیدین برام نوشتین
خیلی کامله فقط من میخوام وقتی کلمه کلیدی پیدا کرد مثلا نزنه while[found] - while[found] - while[found] ، میخوام بزنه مثلا while 3[found] یعنی 3تا while پیدا کرده به جای اینکه 3بار while رو چاپ کنه ممنون میشم اکر کمکم کنین
با سلام و
با اجازه ي آقاي unique


$txt = "while it is integer then ...";
$keys = array("if","while","then","for","else","elseif");
$wrds = explode(" ",$txt);
$i=0;
$str="";
foreach($wrds as $wrd)
if (in_array($wrd,$keys))
{
$str=$wrd;
$i++;

}
echo "[".$str."]".$i."found";

omidmetal90
یک شنبه 14 خرداد 1391, 15:51 عصر
با سلام و
با اجازه ي آقاي unique


$txt = "while it is integer then ...";
$keys = array("if","while","then","for","else","elseif");
$wrds = explode(" ",$txt);
$i=0;
$str="";
foreach($wrds as $wrd)
if (in_array($wrd,$keys))
{
$str=$wrd;
$i++;

}
echo "[".$str."]".$i."found";


میشه لطف کنین با اون یکی کد انجام بدین؟؟

این کدی که شما از آقای unique برداشتین ویرایشش کردین همونیه که آقای Unique گفتن درستش اینه که اینجوری نوشت ولی در اصل من میخوام کد به این صورت باشه:

$txt = "while if is integer while then then ...";
$keys = array("if","while","then","for","else","elseif");
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);
echo "<pre>";
print_r($chars);
echo "</pre>";

$wrd = "";
foreach($chars as $char)
if ($char != " "){
$wrd .= $char;
}else{
if (in_array($wrd,$keys))
echo "[".$wrd."] found !";
$wrd = "";
}

H:Shojaei
یک شنبه 14 خرداد 1391, 17:01 عصر
$txt = "while if is integer while then then ...";
$keys = array("if","while","then","for","else","elseif");
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);
echo "<pre>";
print_r($chars);
echo "</pre>";

$wrd = "";
$i=0;
foreach($chars as $char)
if ($char != " ")
{

$i++;
$wrd .= $char;
}
else
{

if (in_array($wrd,$keys))
echo "[".$srt."]"."count".$i;
$i=0;
$wrd = "";
}


اميذوارم جواب بده:گیج::لبخند:

omidmetal90
یک شنبه 14 خرداد 1391, 17:15 عصر
$txt = "while if is integer while then then ...";
$keys = array("if","while","then","for","else","elseif");
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);
echo "<pre>";
print_r($chars);
echo "</pre>";

$wrd = "";
$i=0;
foreach($chars as $char)
if ($char != " ")
{

$i++;
$wrd .= $char;
}
else
{

if (in_array($wrd,$keys))
echo "[".$srt."]"."count".$i;
$i=0;
$wrd = "";
}


اميذوارم جواب بده:گیج::لبخند:

مرسی با کمی تصحیح کد جواب این شد:
تعداد5[while]تعداد2[if]تعداد5[while]تعداد4[then]تعداد4[then]

ولی باز نگاه کنین while رو بازم آورده

H:Shojaei
یک شنبه 14 خرداد 1391, 19:36 عصر
با سلام
خدمت شما



$txt = "while if is integer while then then ...";
$keys = array("if","while","then","for","else","elseif");
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);
echo "<pre>";
print_r($chars);
echo "</pre>";

$wrd = "";
$i=0;
$c=0;
$ari=array(0);
$ars=array();
foreach($chars as $char)
if ($char != " ")
{

$i++;
$wrd .= $char;
}
else
{
$t=0;
if (in_array($wrd,$keys))
{
for($j=0;$j<$c;$j++)
if ($ars[$j]==$wrd)
{
$ars[$j]=$wrd;
$ari[$j]=$ari[$j]+$i;
$i=0;
$t=1;
$wrd = "";
break;
}
if($t==0)
{
$ars[$c]=$wrd;
$ari[$c]=$i;
$c++;
}

}

$i=0;
$wrd = "";
}
for($i=0;$i<$c;$i++)
echo "[".$ars[$i]."]"."count".$ari[$i]."<br/>";



خروجي::چشمک:
[while]count10
[if]count2
[then]count8

omidmetal90
یک شنبه 14 خرداد 1391, 19:47 عصر
با سلام
خدمت شما



$txt = "while if is integer while then then ...";
$keys = array("if","while","then","for","else","elseif");
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);
echo "<pre>";
print_r($chars);
echo "</pre>";

$wrd = "";
$i=0;
$c=0;
$ari=array(0);
$ars=array();
foreach($chars as $char)
if ($char != " ")
{

$i++;
$wrd .= $char;
}
else
{
$t=0;
if (in_array($wrd,$keys))
{
for($j=0;$j<$c;$j++)
if ($ars[$j]==$wrd)
{
$ars[$j]=$wrd;
$ari[$j]=$ari[$j]+$i;
$i=0;
$t=1;
$wrd = "";
break;
}
if($t==0)
{
$ars[$c]=$wrd;
$ari[$c]=$i;
$C++‎;
}

}

$i=0;
$wrd = "";
}
for($i=0;$i<$c;$i++)
echo "[".$ars[$i]."]"."count".$ari[$i]."<br/>";



خروجي::چشمک:
[while]count10
[if]count2
[then]count8

ممنون از کدتون ولی 2تا while بیشتر نیس چجوری 10 تا داده تو خروجی؟؟؟؟

H:Shojaei
یک شنبه 14 خرداد 1391, 19:58 عصر
توي كد اولتون شما تعداد كاراكتر هاي هر كلمه رو ميخواستين مگه اينطور نبود؟
اگه نبود همون اول بايد ميگفتيد مگه نه؟

H:Shojaei
یک شنبه 14 خرداد 1391, 20:01 عصر
باز هم مشكلي نيست اين هم از اين:


<?php
$txt = "while if is integer while then then ...";
$keys = array("if","while","then","for","else","elseif");
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);
echo "<pre>";
print_r($chars);
echo "</pre>";

$wrd = "";
$i=0;
$c=0;
$ari=array(0);
$ars=array();
foreach($chars as $char)
if ($char != " ")
{


$wrd .= $char;
}
else
{ $i++;
$t=0;
if (in_array($wrd,$keys))
{
for($j=0;$j<$c;$j++)
if ($ars[$j]==$wrd)
{
$ars[$j]=$wrd;
$ari[$j]=$ari[$j]+$i;
$i=0;
$t=1;
$wrd = "";
break;
}
if($t==0)
{
$ars[$c]=$wrd;
$ari[$c]=$i;
$c++;
}

}

$i=0;
$wrd = "";
}
for($i=0;$i<$c;$i++)
echo "[".$ars[$i]."]"."count".$ari[$i]."<br/>";
?>
خروجي:
while]count2]
if]count1]
then]count2]
مشكلي نيست؟

yones_safari
یک شنبه 14 خرداد 1391, 20:09 عصر
ممنون از کدتون ولی 2تا while بیشتر نیس چجوری 10 تا داده تو خروجی؟؟؟؟
اينهمه كد برا يه كار كوچيك؟!!!!

$txt = "while if is integer while then then ...";
$keys = array("if","while","then","for","else","elseif");
foreach($keys as $value)
{
$search=substr_count($txt,$value);
if($search!=0)
echo $value."[$search]<br />";
}
موفق باشيد

H:Shojaei
یک شنبه 14 خرداد 1391, 20:19 عصر
:تشویق:
عجب توابعي داريم خبر نداريم:قهقهه:

omidmetal90
یک شنبه 14 خرداد 1391, 20:23 عصر
اينهمه كد برا يه كار كوچيك؟!!!!

$txt = "while if is integer while then then ...";
$keys = array("if","while","then","for","else","elseif");
foreach($keys as $value)
{
$search=substr_count($txt,$value);
if($search!=0)
echo $value."[$search]<br />";
}
موفق باشيد


من معذرت میخوام ولی چرا پست های بالا رو نخوندین بعد کد رو نوشتین؟؟؟
این بنده های خدا که مدارو بالا نوشتن دیوانه نبودن که اونطوری بنویسن حتما دلیلی داشته دیگه!!!!!

omidmetal90
یک شنبه 14 خرداد 1391, 20:31 عصر
باز هم مشكلي نيست اين هم از اين:


<?php
$txt = "while if is integer while then then ...";
$keys = array("if","while","then","for","else","elseif");
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);
echo "<pre>";
print_r($chars);
echo "</pre>";

$wrd = "";
$i=0;
$c=0;
$ari=array(0);
$ars=array();
foreach($chars as $char)
if ($char != " ")
{


$wrd .= $char;
}
else
{ $i++;
$t=0;
if (in_array($wrd,$keys))
{
for($j=0;$j<$c;$j++)
if ($ars[$j]==$wrd)
{
$ars[$j]=$wrd;
$ari[$j]=$ari[$j]+$i;
$i=0;
$t=1;
$wrd = "";
break;
}
if($t==0)
{
$ars[$c]=$wrd;
$ari[$c]=$i;
$c++;
}

}

$i=0;
$wrd = "";
}
for($i=0;$i<$c;$i++)
echo "[".$ars[$i]."]"."count".$ari[$i]."<br/>";
?>
خروجي:
while]count2]
if]count1]
then]count2]
مشكلي نيست؟



ایول ایول خیلی خوب نوشتی داداش دمت گرم

من دقیقا همینو میخواستم موفق باشی داداش

omidmetal90
یک شنبه 14 خرداد 1391, 21:52 عصر
باز هم مشكلي نيست اين هم از اين:


<?php
$txt = "while if is integer while then then ...";
$keys = array("if","while","then","for","else","elseif");
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);
echo "<pre>";
print_r($chars);
echo "</pre>";

$wrd = "";
$i=0;
$c=0;
$ari=array(0);
$ars=array();
foreach($chars as $char)
if ($char != " ")
{


$wrd .= $char;
}
else
{ $i++;
$t=0;
if (in_array($wrd,$keys))
{
for($j=0;$j<$c;$j++)
if ($ars[$j]==$wrd)
{
$ars[$j]=$wrd;
$ari[$j]=$ari[$j]+$i;
$i=0;
$t=1;
$wrd = "";
break;
}
if($t==0)
{
$ars[$c]=$wrd;
$ari[$c]=$i;
$c++;
}

}

$i=0;
$wrd = "";
}
for($i=0;$i<$c;$i++)
echo "[".$ars[$i]."]"."count".$ari[$i]."<br/>";
?>
خروجي:
while]count2]
if]count1]
then]count2]
مشكلي نيست؟


اقا خیلی گلی من دیگه روم نمیشه سوالمو بپرسم ولی حالا می پرسم گیر کردیم دیگه چه کنیم!

الان ما آرایه ای کلیدی $keys داریم که کلمات کلیدیمونو با آرایه ورودی مقایسه میکنه
من میخوام با همین کدی که دادی خیلی هم عالیه دو آرایه دیگه هم باشه یعنی آرایه ورودی با 3 آرایه مقایسه بشه که اگه با کلیدی ها بود بگه keywords اگه با نشانه ها{>و<و=و(و)و+و-} بود بگه symbols و اگر عدد بود بگه constant هست
یعنی از keywords ها مثلا 4تا while پیدا کرده از symbol ها 2تا پرانتز مثلا 1دونه علامت > پیدا کرده از constant ها 3تا عدد پیدا کره

خلاصه میدونم خیلی پرووعم ولی اگه کمکم کنین دعاتون میکنم

H:Shojaei
دوشنبه 15 خرداد 1391, 00:54 صبح
با سلام :عصبانی++:




<?php
$txt = "while if is integer while then then > - - = = ...";
$keys1 = array("if","while","then","for","else","elseif");
$keys2 = array(">","<",")","(","=","+","-");
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);
echo "<pre>";
print_r($chars);
echo "</pre>";
for($u=1;$u<4;$u++)
{
$wrd = "";
$i=0;
$c=0;
$ari=array(0);
$ars=array();
foreach($chars as $char)
if ($char != " ")
{
$wrd .= $char;
}
else
{ $i++;
$t=0;
if ($u==1)
$keys=$keys1;
else if ($u==2)
$keys=$keys2;
if (in_array($wrd,$keys))
{
for($j=0;$j<$c;$j++)
if ($ars[$j]==$wrd)
{
$ars[$j]=$wrd;
$ari[$j]=$ari[$j]+$i;
$i=0;
$t=1;
$wrd = "";
break;
}
if($t==0)
{
$ars[$c]=$wrd;
$ari[$c]=$i;
$c++;
}

}

$i=0;
$wrd = "";
}
if($u==1)
echo"<b>keywords:</b><br />";
if($u==2)
echo"<b>symbol:</b><br />";
for($i=0;$i<$c;$i++)
echo "[".$ars[$i]."]"."count".$ari[$i]."<br />";
}
?>

دوست عزيز بهتره قسمت سومش رو خودتون بنويسيد تا با برنامه آشنايي كامل پيدا كنيد.:تشویق: اين همه شما گفتيد من انجام دادم حالا همين يكي رو من گفتم شما انجام بده البته براي خودت ميگم.
البته اون رو هم نوشته بودم ولي برداشتمش.:بامزه:

omidmetal90
دوشنبه 15 خرداد 1391, 01:24 صبح
دوست عزيز بهتره قسمت سومش رو خودتون بنويسيد تا با برنامه آشنايي كامل پيدا كنيد.:تشویق: اين همه شما گفتيد من انجام دادم حالا همين يكي رو من گفتم شما انجام بده البته براي خودت ميگم.
البته اون رو هم نوشته بودم ولي برداشتمش.:بامزه:

خوب من خودم خیلی کار نکردم ولی یه کاری کردم این که میاد اون symbol هارم میشناسه منتهی نمیدونم چقد درسته من میزارم کد اینجا شما راهنماییم کنین لطفا:





//$txt = "while if is integer while then then until for if if if ...";

$txt = $_POST['txt1'];
$keys = array("if","while","then","for","else","elseif","until","each","elseif");
$symbol= array("<",">");
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);
echo "<pre>";
print_r($chars);
echo "</pre>";

$wrd = "";
$i=0;
$c=0;
$ari=array(0);
$ars=array();

foreach($chars as $char)
if ($char != " ")
{
$wrd .= $char;
}
else
{
$i++;
$t=0;
if ((in_array($wrd,$keys)) || (in_array($wrd,$symbol)))
{
for($j=0;$j<$c;$j++)
if ($ars[$j]==$wrd)
{
$ars[$j]=$wrd;
$ari[$j]=$ari[$j]+$i;
$i=0;
$t=1;
$wrd = "";
break;
}
if($t==0)
{
$ars[$c]=$wrd;
$ari[$c]=$i;
$c++;
}
}

$i=0;
$wrd = "";
}
for($i=0;$i<$c;$i++)
echo "{[ ".$ars[$i]." ]"." - ".$ari[$i]."} , ";



منتهی یه بدی که داره نمیتونم بگم اگر مثلا symbol بود بنویس symbol و < 4تا و یا مثلا اگر keywords بود بنویس keywords و 2تا while مثلا

H:Shojaei
دوشنبه 15 خرداد 1391, 11:23 صبح
قبل for آخر كه مقادير رو چاپ ميكني اين رو مينويسي


if ((in_array($wrd,$keys)) )
{
echo "keyword:";
}
if ((in_array($wrd,$symbol)) )
{
echo "symbol:";
}

درضمن ميتونستي از همون آخري كه براتون نوشتو هم استفاده كنيد كه keywordها و symbolها زو ميشناخت.

H:Shojaei
دوشنبه 15 خرداد 1391, 12:33 عصر
سلام
اين رو يه نگاه بكن::متفکر:



<span dir="ltr">//$txt = "while if is integer while then then until for if if if ...";
<?php
$txt = "while if is integer while then then until for if if if > - > ...";
$keys = array("if","while","then","for","else","elseif","u ntil","each","elseif");
$symbol= array("<",">");
$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);
echo "<pre>";
print_r($chars);
echo "</pre>";

$wrd = "";
$i=0;
$c=0;
$ari=array(0);
$ars=array();
$artype=array();
foreach($chars as $char)
if ($char != " ")
{
$wrd .= $char;
}
else
{
$i++;
$t=0;
if ((in_array($wrd,$keys)) || (in_array($wrd,$symbol)))
{

for($j=0;$j<$c;$j++)
if ($ars[$j]==$wrd)
{
if(in_array($wrd,$keys))
$artype[$j]="keyword";
if(in_array($wrd,$symbol))
$artype[$j]="symbol";
$ars[$j]=$wrd;
$ari[$j]=$ari[$j]+$i;
$i=0;
$t=1;
$wrd = "";
break;
}
if($t==0)
{
if(in_array($wrd,$keys))
$artype[$c]="keyword";
if(in_array($wrd,$symbol))
$artype[$c]="symbol";
$ars[$c]=$wrd;
$ari[$c]=$i;
$c++;
}
}

$i=0;
$wrd = "";
}
for($i=0;$i<$c;$i++)
echo $artype[$i].":{[ ".$ars[$i]." ]"." - ".$ari[$i]."} , ";
?>
</span>



خروجي:

keyword:{[ while ] - 2} , keyword:{[ if ] - 4} , keyword:{[ then ] - 2} , keyword:{[ for ] - 1} , symbol:{[ > ] - 2}

omidmetal90
دوشنبه 15 خرداد 1391, 20:11 عصر
سلام
اين رو يه نگاه بكن::متفکر:

خروجي:

keyword:{[ while ] - 2} , keyword:{[ if ] - 4} , keyword:{[ then ] - 2} , keyword:{[ for ] - 1} , symbol:{[ > ] - 2}


آقا خیلی گلی خیلی گلیها دمت گرم یه خورده کدی که نوشتی برام توضیح بده من نمیدونم یه سری از متغیر هاروو برا چی گذاشتی :
مثلا $c چیکار میکنه؟ یا $t یا $ari یا $ars

Unique
دوشنبه 15 خرداد 1391, 22:26 عصر
فکر کنم این کد خیلی قابل فهم تر باشه :


$txt = "10 while > when <> if then <> when = 15 if <> 10 10 while if";
$arrs['keys'] = array("if","while","then","for","else","elseif");
$arrs['symbols'] = array(">","<","<>","=");
$arrs['numbers'] = array("10","15","17","9");

$chars = array();
for ($i=0;$i<strlen($txt);$i++)
$chars[] = substr($txt,$i,1);

$wrd = "";
$res = array();
for($i=0;$i<count($chars);$i++){
$ch = $chars[$i];

if ($ch != " ")
$wrd .= $chars[$i];

if ($i == count($chars) - 1)
$ch = " ";

if ($ch == " "){
foreach($arrs as $key=>$value)
if (in_array($wrd,$value)){
if (!isset($res[$key]['total_found']))
$res[$key]['total_found'] = 1;
else
$res[$key]['total_found'] += 1;

if (!isset($res[$key][$wrd]))
$res[$key][$wrd] = 1;
else
$res[$key][$wrd] += 1;
}
$wrd = "";
}
}

// output

echo "<b>Text :</b> ".$txt."<br>";

foreach($res as $k=>$r){
echo sprintf("<b>%d case(s) found in %s :</b> <br>",$r['total_found'],$k);
foreach($r as $kw=>$c)
if ($kw != "total_found")
echo "&nbsp;&nbsp;&nbsp;[".$kw."] : ".$c." time(s).<br>";
}

omidmetal90
دوشنبه 15 خرداد 1391, 23:41 عصر
فکر کنم این کد خیلی قابل فهم تر باشه :



آقا ممنون خیلی خوب نوشته شده میشه کمی توضیح در رابطه با کد بهم بدین؟؟؟

H:Shojaei
سه شنبه 16 خرداد 1391, 00:19 صبح
آقا ممنون خیلی خوب نوشته شده میشه کمی توضیح در رابطه با کد بهم بدین؟؟؟
سلام
آهان دليل اين كه گفتم قسمت اعدادش رو خودتون بنويسيد همين بود ديگه اومديمو ما توضيح داديم شما بعدا يادت رفت بعد چي اگه يه قسمتش رو خودت انجام بدي كدها ميره تو خونت.
موفق باشيد

Unique
سه شنبه 16 خرداد 1391, 02:27 صبح
آقا ممنون خیلی خوب نوشته شده میشه کمی توضیح در رابطه با کد بهم بدین؟؟؟
راستش اگه کسی مفاهیم پایه ای در مورد آرایه ها در php را بدونه ! کدی که دادم اصلا پیچیدگی نداره.