PDA

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



$ M 3 H R D A D $
پنج شنبه 21 دی 1391, 08:44 صبح
سلام دوستان
من یک پروژه ای و میخوام آموزش بدم که با این میتونید نرخ ارز ماشین یا هرچیزی و از سایت ها بگیرید
و یک سیستم مدیریت بسازید و به صورت مرتب روزانه و ساعات خاص به مشتری هاتون اس ام اس بشه
کلی تو این ضمینه من فک کرم
قرار این آموزش و سر فرصت شروع کنم امروز یا فردا

تشکر یادتون نره ! هر یک تشکر یعنی یک آدم مشتاق : دی :گیج:

miladwwe2013
پنج شنبه 21 دی 1391, 09:03 صبح
ممون از این کار مقیدتون میشه سرفصل هاشو بذاری

$ M 3 H R D A D $
پنج شنبه 21 دی 1391, 09:09 صبح
سر فصل خاصی نداره دوست عزیز
دلم میخواد به زبون عام خودم توضیح بدم آخه دارم این پروژه و تکمی میکنم گفتم با دوستان پیش برم بهتره هم یاد میگیرن افراد دیگه هم من و دوستان ارشد تر کمک میکنند
ارز + سکه + قیمت های آهن + ماشین

خیلی از سایت ها میان این قیمت ها و ارائه میدن که ف ی ل ت ر هم ممکنه باشند

بعضی ها برای قیمت ها آر اس اس میدن
تو بعضی ها باید خودمون از قیمت های تو html جدا سازی انجحام بدیم

میخوام مثل وب گذر یا وب تولز یک جاوا اکریپت بدیم که بتونیم اونو هم لایسنسی کنیم یعنی هرکی پول داد بتونه ببینه

حالا پیش میریم یه بلایی سرش میاد دیگه : دی

SilverLearn
پنج شنبه 21 دی 1391, 13:23 عصر
سلام
اگه بخواین نرخ ارز مرجع رو فراخوانی کنید می تونید از خود بانک مرکزی استعلام بگیریرد
از طریق لینک زیر

http://www.cbi.ir/ExRatesRss.aspx

گفتم شاید بتونه بهتون کمک کنه....

SilverLearn
پنج شنبه 21 دی 1391, 13:27 عصر
این تکه کد رو هم قبلا نوشتم گفتم شاید به کارت بیاد




<style>
* {
direction:rtl;
font-family:tahoma;
font-size:12px;
}
</style>
<?php

$doc = new DOMDocument();
$doc->load('http://www.cbi.ir/ExRatesRss.aspx');
$arrFeeds = array();
foreach ($doc->getElementsByTagName('item') as $node) {
$itemRSS = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue
);
array_push($arrFeeds, $itemRSS);
}
?>

<table dir="rtl" cellpadding="10px" >
<?php foreach($arrFeeds as $money) { ?>
<tr><td><?php echo $money['title']; ?></td><td><?php echo $money['desc']; ?></td></tr>
<?php } ?>
</table>



تکه کد زیر در بالا عنوان رو نشون میده :




<?php echo $money['title']; ?>



خروجیش میشه مثلا :




دلار آمريکا USD در تاریخ 1391/10/21 : ( 1USD = 12260 RLS )


و کد زیر




<?php echo $money['desc']; ?>



خروحیش میشه مثلا :




12260 ریال ایران = 1 دلار آمريکا

$ M 3 H R D A D $
پنج شنبه 21 دی 1391, 18:36 عصر
کلاس های زیر واسه کار با html هست
با این کلاس ها مثل کوئری در sql میتونیم مقادیر دلخواه و بگیریم

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

من واسه اینکلود کلاس ها و توابع خودم کنار فایل برنامه یک فولدر می سازم به اسم includes
و توش یک فولدر دیگه به اسم class و یا function

خوب خط اول و اختصای میدم به این دستور :

if(!defined('ROOT')) {
define('ROOT', preg_replace('#\\\\#', '/', dirname(__FILE__)));
}

خوب با اینکار میخوام روت و مشخص کنم که از اونجا به بعد include ها خودم و انجام بدم

کد اصلی برنامه رو هم تو یک فایل به نام cron.php نوشتم چون در واقع این فایل فقط توسط کران جاب فراخونی میشه و کارش ریختن اطلاعات در بانک مثلا هر 5 مین یکبار است.

خوب از بانگک اسم بردیم پس بهتره ساختار بانک ها و بهتون بگم :

یک جدول داریم به اسم setting که تو همه پروژه هام به عنوان ذخیره ساز تنظیمات ازش استفاده می کنم

اسم بانک هم گذاشتم nerkh

جدول setting یک فیلد داره به نام ID که نوع عددی و AUTO_INCREMENT هست
و معمولا همین یک رکورد باقی می مونه و برای تغییرات عمل بروز رسانی انجام میشه
فیلد بعدی password هست که توش کلمه عبور و نکه میدارم که اینجا هش نشده که میتونید هش هم کنید که بهتر باشه
فیلد بعدی per_second هست که بعدا بهش می پردازیم ( برای نگه داشتن زمان رفرش هست )

جدول بعدی اسمش data هست که داده ها و توش قرار میدیم :
فیلد ها مهم اون هم time هست که از نوع timestamp هست که خود به خود بعد از هر insert زمان و تو خودش نگه میداره

ساختار :


--
-- Database: `nerkh`
--

-- --------------------------------------------------------

--
-- Table structure for table `data`
--

CREATE TABLE IF NOT EXISTS `data` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`data` text COLLATE utf8_persian_ci NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `setting`
--

CREATE TABLE IF NOT EXISTS `setting` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`password` varchar(255) COLLATE utf8_persian_ci NOT NULL,
`per_second` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=2 ;

--
-- Dumping data for table `setting`
--

INSERT INTO `setting` (`id`, `password`, `per_second`) VALUES
(1, '123456', 60);



از ایم به بعد کد ها اصلی :


<?php

if(!defined('ROOT')) {
define('ROOT', preg_replace('#\\\\#', '/', dirname(__FILE__)));
}
set_time_limit (0);
date_default_timezone_set('Asia/Tehran');

require_once ROOT.'/includes/class/SQLManager.class.php';
$obj = new SQLManager();
$result = $obj->query_mysql("SELECT * FROM `setting`");
$pass = $obj->array_mysql($result);
$pass = $pass["password"];


با تابع set_time_limit زمان و بی نهایت کردم چون ممکنه سرعت لود سایت ها کم و زیاد باشه و اسکریپت نباید تو زمان 30 ثانیه از کار بیافته
البته خیلی طول نمیکشه با تابع microtime چک کردم زیاد نبود
اما میتونید با توجه به محدودیت که مدیر سرور بهتون میده این زمان و محدود کنید

خوب تو اینجا من ساعت و تاریخ هم نگه میدارم که کار اضافی هست چون همون فیلد زمان در جدول data خودش به دردمون میخوره با تابع strtotime قابل استفاده هست

SQLManager.class.php اسم کلاسی هست باری کار با دیتابیس که ازش یک آبجکت ساختم
و مقدار پسورد و از بانک فراخوانی کردم و ریختم تو متفییر $pass
ادامه...

$ M 3 H R D A D $
پنج شنبه 21 دی 1391, 19:54 عصر
خوب واسه command کران جاب باید تو پنل cpanel دستوری و بدیم که مقلا هر 5 مین یکبار اجرا بشه

خوب فایل cron.php ما تو یک مسیری هست که اگه لو بره میتونه هی اجرا بشه و هم بانک پر بشه و هم سرور و درگیر کنه واسه همین برای اسکریپت پسورد در نظر گرفتم :


home/iranlcco/public_html/secret_file/cron.php?password=123456

خوب ببینید پسورد و تو کران آوردم جون اسکریپت وقتی لود میشه که پسورد و تو پارامتر get لیک بدیم ( همون پسوردی که تو جدول setting هست )
با این حساب پس هروقت پسورد لو رفت میشه عوضش کرد

ادامه کد :



if(isset($_GET['password']) && $_GET['password']==$pass) {

خوب اگه پسورد داشت تو پارامتر و پسورد مساوی با پس تو بانک بود اجرا صورت بگیره



require_once ROOT.'/includes/class/persian_date.class.php';
require_once ROOT.'/includes/class/snoopy.class.php';
require_once ROOT.'/includes/class/htmlsql.class.php';

$persian=new persian_date();



تو ادامه کلاس کار با html که تئ پست سوم گذاشتم و include کردم به همراه کلاس تاریخ شمسی

و یک آبجکت از تاریخ شمسی ساختم

خوب نرخ سکه + طلا و می خوام از سایت http://www.tgju.org/ بگیرم

خودتون تو سایت برید میبینید که نرخ ها تو table ها متفاوت هست اول ..دوم ..سوم...
خوب رو صفحه کلیک راست کنید view source بزنید میبینید که خروجی اون چیه
هدف ما هم ساخت کدی هست که این خروجی و پردازش رشته کنه و فقط قیمت ها و بکشه بیرون
خوب واسه اینکه خروجی اون سایت و بگیریم با تبع ساده file_get_contents این کارو انجام میدیم :


$homepage = file_get_contents("http://www.tgju.org/");

واسه کار با تابع htmlsql کافیه یک آبچکت بسازیم و بعد بگیم میخوایم تو چه mode ازش استفاده کنیم
: میتونه لینک مستقیم بدیم میتونیم از یک متغییررشته به عنوان شروع پردازش استفاده کنیم
خوب من با تابع بالا مقدار و گرفتم پس از نوع رشته شروع میکنم
لازم به ذکر هست که تو بعضی هاست ها برای تابع file_get_content اجازه fetch نمیده هاست دسترسی نمیده واسه همین باید با سوکت زدن به پورت 80 خروجی سایت و بگیرن ( همون html )


$wsql = new htmlsql();
if (!$wsql->connect('string', $homepage)){
print 'Error while connecting: ' . $wsql->error;
exit;
}
if (!$wsql->query('SELECT * FROM table WHERE $id=="gold_tbl"')){
print "Query error: " . $wsql->error;
exit;
}

$gold = $wsql->fetch_array();

اگه به سایت که گفم برید میبینید از شانس خوب ( البته نظم طراح اون سایت ) برای همه جدول ها ( جدول طلا سکه ... یک آیدی در نظر گرفته )
یغنی یک table طراحی کرده که به اون المنت آیدی داده
و واسه همین راحت تونستم اون table و از تو html بکشم بیرون
کوئری و ببینید :
انتخاب کن از بین تمامی تگ های table اونی و فیلتر کن که مقدار id اون برابر باشه به gold_tbl
این کلاس از and و or و ... پشتیبانی می کنه
با تابع fet_array این کلاس میتونید خروجی و که به صورت آرایه هست و بگیرید که چون اینجا ما فقط یک تگ table داشتیم که اون آیدی مورد نظر ما و داشت دیگه تو حلقه نذاشتمش
خوب این تابع مقادیر و با ذکر الکنت بر میگردونه یعنی مقلا اگه تگ a و بخواین جستجو کنید آرایه شامل ایندکس ها href textو .. هست

با کد زیر کل html اون تگ table و تو یک متغییر نگه میدارم واسه مراحل بعدی

$gold = $gold[0]['text'];

به همین صورت واسه جدول سکه :

if (!$wsql->query('SELECT * FROM table WHERE $id=="coin_tbl"')){
print "Query error: " . $wsql->error;
exit;
}


$coin = $wsql->fetch_array();
$coin = $coin[0]['text'];
ادامه داره

$ M 3 H R D A D $
پنج شنبه 21 دی 1391, 21:58 عصر
راستی ابزار inspector فایر فاکس + اد آن live http header واسه مانیتور کردن درخواست های http واسه ساخت ربات و حتما پیشنهاد می کنم که همیشه نصب داشته باشید

dousti_design
پنج شنبه 21 دی 1391, 22:20 عصر
من قبلا برای ارز یه کدی نوشته بودم که خوب داشت کار میکرد اما بعد از اشفتگی بازار ارز سایت مرجعی که ازش میگرفتم فیلتر شد. الانم دیگه قیمت نمیزنه. اما خب ساختار کلیش اینجوریه شاید این کد بدردت بخوره:


function getTextBetweenTags($string, $tagname) {
$pattern = "/<$tagname ?.*>(.*)<\/$tagname>/";
preg_match($pattern, $string, $matches);
return $matches[1];
}


$url = "http://onlinecurrency.ir/widget/widget.html";
$str = file_get_contents($url);
$string = $str;
$pattern = '(<td>[0-9]+\,[0-9]+</td>)';
preg_match_all($pattern, $string, $matches);
//print_r($matches);

$ M 3 H R D A D $
پنج شنبه 21 دی 1391, 22:41 عصر
<table id="gold_tbl">
<tbody>
<tr>
<th>قيمت طلا</th>
<th>قيمت زنده</th>
<th>تغيير</th><th>کمترين</th>
<th>بيشترين</th><th>زمان</th>
</tr>
<tr>
<td>انس طلا <sup>دلار</sup></td><td class="s0_1">1,679.50</td><td class="c0_1 pos">(1.26%) 20.90</td><td class="l0_1">1,655.10</td><td class="h0_1">1,679.70</td><td class="z0_1 fa">22:31</td></tr><tr><td>مثقال طلا</td><td class="s3_2">5,600,000</td><td class="c3_2 pos">(0.36%) 20,000</td><td class="l3_2">5,575,000</td><td class="h3_2">5,600,000</td><td class="z3_2 fa">14:31</td></tr><tr><td>گرم طلاي 18</td><td class="s3_3">1,292,800</td><td class="c3_3 pos">(0.36%) 4,700</td><td class="l3_3">1,287,000</td><td class="h3_3">1,292,800</td><td class="z3_3 fa">14:31</td></tr><tr><td>انس نقره <sup>دلار</sup></td><td class="s0_5">31.03</td><td class="c0_5 pos">(1.94%) 0.59</td><td class="l0_5">30.31</td><td class="h0_5">31.04</td><td class="z0_5 fa">22:31</td></tr></tbody></table>


خوب مقداری که تو متغییر $gold هست که همون کد html جدول طلا یعنی همون تگ table با آیدی gold_tbl هست جیزیه کو بالا گذاشتم
حالا واسه پردازش اون با DOMDocument دستبکار میشیم :

با inspector فایرفاکس روش زوم کنید ( رو جدول طلا ) میبینید که قانون خاصی نداره که پیمایش صحیح کنید
جون وسط هاش هم گندتا تگ sub داره و td ها وسطش دارای المنت class هست
واسه همین اومدم کل td ها و لیست کردم و با دست شموردم مقلا قیمت طلا در بازار جهانی جندمین td هست


$dom = new DOMDocument;
$dom->loadHTML( $gold );
$cells = array();
foreach( $dom->getElementsByTagName( 'td' ) as $td ) {
$cells[] = $td->nodeValue;
}


خوب من گفتم با دست بشمارید ( از راست یا از چپ؟ بستگی به dir تیبل داره که راست چین هست یا نه
خوب منظقی تر اینه که آرایه cells و با دستور print_r چاپ کنید تا ببینید کدوم ایندکس ها لازم هست
نتیجه :

}

$gold = array();
$gold['ons_tala'] = str_replace(",",'',$cells[1]);
$gold['ons_tala_taghir'] = $cells[2];
$gold['ons_tala_min'] = $cells[3];
$gold['ons_tala_max'] = $cells[4];
$gold['mesghal'] = str_replace(",",'',$cells[7]);
$gold['mesghal_taghir'] = $cells[8];
$gold['mesghal_min'] = $cells[9];
$gold['mesghal_max'] = $cells[10];
$gold['geram'] = str_replace(",",'',$cells[13]);
$gold['geram_taghir'] = $cells[14];
$gold['geram_min'] = $cells[15];
$gold['geram_max'] = $cells[16];
$gold['ons_noghre'] = str_replace(",",'',$cells[19]);
$gold['ons_noghre_taghir'] = $cells[20];
$gold['ons_noghre_min'] = $cells[21];
$gold['ons_noghre_max'] = $cells[22];

به همین روال برای سکه :


// get coin
$dom = new DOMDocument;
$dom->loadHTML( $coin );
$cells = array();
foreach( $dom->getElementsByTagName( 'td' ) as $td ) {
$cells[] = $td->nodeValue;
}

$coin = array();
$coin['bahar_azadi'] = str_replace(",",'',$cells[1]);
$coin['bahar_azadi_taghir'] = $cells[2];
$coin['bahar_azadi_min'] = $cells[3];
$coin['bahar_azadi_max'] = $cells[4];
$coin['bahar_azadi_arzesh'] = $cells[5];
//
$coin['emami'] = str_replace(",",'',$cells[8]);
$coin['emami_taghir'] = $cells[9];
$coin['emami_min'] = $cells[10];
$coin['emami_max'] = $cells[11];
$coin['emami_arzesh'] = $cells[12];
//
$coin['nim'] = str_replace(",",'',$cells[15]);
$coin['nim_taghir'] = $cells[16];
$coin['nim_min'] = $cells[17];
$coin['nim_max'] = $cells[18];
$coin['nim_arzesh'] = $cells[19];
//
$coin['rob'] = str_replace(",",'',$cells[22]);
$coin['rob_taghir'] = $cells[23];
$coin['rob_min'] = $cells[24];
$coin['rob_max'] = $cells[25];
$coin['rob_arzesh'] = $cells[26];
//
$coin['gerami'] = str_replace(",",'',$cells[29]);
$coin['gerami_taghir'] = $cells[30];
$coin['gerami_min'] = $cells[31];
$coin['gerami_max'] = $cells[32];
$coin['gerami_arzesh'] = $cells[33];

$ M 3 H R D A D $
پنج شنبه 21 دی 1391, 23:19 عصر
آره دوست عزیز پترن هم خوبه اما اگه یک سایت آیتم های زیادی داشته باشه باید یکبار بگردی مثل domdocument و بعدش ریز به ریزش کنی
پترن تا جایی که میدونم کل صفحه و میگرده هر دفعه

$ M 3 H R D A D $
پنج شنبه 21 دی 1391, 23:23 عصر
راستی دوستان کد زیر برای از بین برد ویرگول ها تو جدا سازی 3 رقم ها هستش
چون تو بانک میریزیم اطلاعات و شاید یک موقع خواستیم میانگین قیمت و تو جند تا زمان مختلف محاسبه کنیم و داده ما دیگه عددی نیست باید اونا حذف بشه
بعضی اوفات هم تو سایت ها اعداد فارسی هستند که باید اونا و با اعداد انگلیسی جایگزین کنیم

str_replace(",",'',$cells[29]);

$ M 3 H R D A D $
جمعه 22 دی 1391, 09:35 صبح
سایت بعدی http://www.zcast.ir/ هست
که با اد آن live http header فهمیدم همه اطلاعات لازمش و از یک لینک می گیره
http://www.zcast.ir/getajax.php?0.734628343668354
(http://www.zcast.ir/ajax_price.am?0.1233)
او عدد رندوم جلوش هم واسه اینه مرورگر اونو کش نکنه و اطلاعات کش نشه تو فاصله 60 ثانیه که هی واکشی اطلاعات انجام میده

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

$homepage = file_get_contents('http://www.zcast.ir/getajax.php?'.rand());


{"mr_arz":{"USD":{"name":"USD","caption":"\u062f\u0644\u0627\u0631","ask":"24564","diff":"0","datemodify":"2013-01-11 18:13:02"},"INR":{"name":"INR","caption":"\u0631\u0648\u067e\u06cc\u0647 \u0647\u0646\u062f","ask":"449","diff":"0","datemodify":"2013-01-11 18:13:02"},"AED":{"name":"AED","caption":"\u062f\u0631\u0647\u0645 \u0627\u0645\u0627\u0631\u0627\u062a","ask":"6688","diff":"0","datemodify":"2013-01-11 18:13:02"},"JPY100":{"name":"JPY100","caption":"\u0635\u062f \u06cc\u0646 \u0698\u0627\u067e\u0646","ask":"27900","diff":"0","datemodify":"2013-01-11 18:13:02"},"TRY":{"name":"TRY","caption":"\u0644\u06cc\u0631 \u062a\u0631\u06a9\u06cc\u0647","ask":"13823","diff":"0","datemodify":"2013-01-11 18:13:02"},"RUB":{"name":"RUB","caption":"\u0631\u0648\u0628\u0644 \u0631\u0648\u0633\u06cc\u0647","ask":"810","diff":"0","datemodify":"2013-01-11 18:13:02"},"CNY":{"name":"CNY","caption":"\u06cc\u0648\u0627\u0646 \u0686\u06cc\u0646","ask":"3947","diff":"0","datemodify":"2013-01-10 16:53:32"},"KRW1000":{"name":"KRW1000","caption":" \u064a\u06a9 \u0647\u0632\u0627\u0631 \u0648\u0648\u0646 \u06a9\u0631\u0647 \u062c\u0646\u0648\u0628\u06cc","ask":"23000","diff":"0","datemodify":"2013-01-10 16:53:02"},"EUR":{"name":"EUR","caption":"\u06cc\u0648\u0631\u0648","ask":"32057","diff":"0","datemodify":"2013-01-10 16:53:02"}},"price":{"bazartehran":{"name":"bazartehran","id":"21","caption":"\u0628\u0627\u0632\u0627\u0631 \u062a\u0647\u0631\u0627\u0646","ask":"5605000","diff":"0","datemodify":1357819336,"max":"5605000","min":"5605000","avg":"5605000"},"pbt":{"name":"pbt","id":"22","caption":"\u067e\u06cc\u0634 \u0628\u06cc\u0646\u06cc","ask":"5617000","diff":"2000","datemodify":1357884676,"max":"5617000","min":"5617000","avg":"5617000"},"ounce":{"name":"ounce","id":"23","caption":"\u0627\u0648\u0646\u0633","ask":"1673.50","diff":"-0.10","datemodify":1357884678,"max":"1673.50","min":"1673.50","avg":"1673.50"},"dolar":{"name":"dolar","id":"25","caption":"\u062f\u0644\u0627\u0631-\u0628\u0627\u0632\u0627\u0631\u062a\u0647\u0631\u 0627\u0646","ask":"0","diff":"-90","datemodify":1357884676,"max":"0","min":"0","avg":"0"},"silver":{"name":"silver","id":"26","caption":"\u0646\u0642\u0631\u0647","ask":"30.89","diff":"-0.01","datemodify":1357884678,"max":"30.89","min":"30.89","avg":"30.89"},"sekke-gad":{"name":"sekke-gad","id":"27","caption":"\u0633\u06a9\u0647 \u0637\u0631\u062d \u0642\u062f\u06cc\u0645","ask":"12700000","diff":"50000","datemodify":1357884676,"max":"12700000","min":"12700000","avg":"12700000"},"sekke-jad":{"name":"sekke-jad","id":"28","caption":"\u0633\u06a9\u0647 \u0637\u0631\u062d \u062c\u062f\u06cc\u062f","ask":"12990000","diff":"20000","datemodify":1357884676,"max":"12990000","min":"12990000","avg":"12990000"},"sekke-nim":{"name":"sekke-nim","id":"29","caption":"\u0646\u06cc\u0645 \u0633\u06a9\u0647","ask":"6470000","diff":"10000","datemodify":1357884676,"max":"6470000","min":"6470000","avg":"6470000"},"sekke-rob":{"name":"sekke-rob","id":"30","caption":"\u0631\u0628\u0639 \u0633\u06a9\u0647","ask":"3440000","diff":"-10000","datemodify":1357884676,"max":"3440000","min":"3440000","avg":"3440000"},"pound":{"name":"pound","id":"24","caption":"\u067e\u0648\u0646\u062f-\u0628\u0627\u0632\u0627\u0631\u062a\u0647\u0631\u 0627\u0646","ask":"0","diff":"-990","datemodify":1357884676,"max":"0","min":"0","avg":"0"},"eur-gbp":{"name":"eur-gbp","id":"35","caption":"\u06cc\u0648\u0631\u0648 \u0628\u0647 \u067e\u0648\u0646\u062f","ask":"0.8212","diff":"-001","datemodify":1357884687,"max":"0.8212","min":"0.8212","avg":"0.8212"},"jpy-usd":{"name":"jpy-usd","id":"36","caption":"\u06cc\u0646 \u0628\u0647 \u062f\u0644\u0627\u0631","ask":"0.0112","diff":"-001","datemodify":1357884687,"max":"0.0112","min":"0.0112","avg":"0.0112"},"eur-usd":{"name":"eur-usd","id":"37","caption":"\u06cc\u0648\u0631\u0648 \u0628\u0647 \u062f\u0644\u0627\u0631","ask":"1.3261","diff":"001","datemodify":1357884687,"max":"1.3261","min":"1.3261","avg":"1.3261"},"gbp-usd":{"name":"gbp-usd","id":"38","caption":"\u067e\u0648\u0646\u062f \u0628\u0647 \u062f\u0644\u0627\u0631","ask":"1.6148","diff":"001","datemodify":1357884687,"max":"1.6148","min":"1.6148","avg":"1.6148"},"dolar-bankmely":{"name":"dolar-bankmely","id":"41","caption":"\u062f\u0644\u0627\u0631-\u0645\u0644\u06cc","ask":"12260","diff":"0","datemodify":1344758848,"max":"12260","min":"12260","avg":"12260"},"euro-bankmely":{"name":"euro-bankmely","id":"42","caption":"\u06cc\u0648\u0631\u0648-\u0645\u0644\u06cc","ask":"15110","diff":"0","datemodify":1344758848,"max":"15110","min":"15110","avg":"15110"},"pound-bankmely":{"name":"pound-bankmely","id":"43","caption":"\u067e\u0648\u0646\u062f-\u0645\u0644\u06cc","ask":"19297","diff":"0","datemodify":1344758848,"max":"19297","min":"19297","avg":"19297"},"euro":{"name":"euro","id":"34","caption":"\u06cc\u0648\u0631\u0648-\u0628\u0627\u0632\u0627\u0631\u062a\u0647\u0631\u 0627\u0646","ask":"0","diff":"-90","datemodify":1357884676,"max":"0","min":"0","avg":"0"},"geram18":{"name":"geram18","id":"350","caption":"\u06af\u0631\u0645 18 \u0639\u06cc\u0627\u0631","ask":"1293919","diff":"1154","datemodify":1357819296,"max":"1293919","min":"1293919","avg":"1293919"},"geram24":{"name":"geram24","id":"3500","caption":"\u06af\u0631\u0645 24 \u0639\u06cc\u0627\u0631","ask":"1725216","diff":"1536","datemodify":1357819296,"max":"1725216","min":"1725216","avg":"1725216"},"uae-derham":{"name":"uae-derham","id":"364","caption":"\u062f\u0631\u0647\u0645 \u0627\u0645\u0627\u0631\u0627\u062a","ask":"0","diff":"-90","datemodify":1357884676,"max":"0","min":"0","avg":"0"},"oil":{"name":"oil","id":"373","caption":"\u0646\u0641\u062a","ask":"93.84","diff":"-0.02","datemodify":1357884687,"max":"93.84","min":"93.84","avg":"93.84"},"palladium":{"name":"palladium","id":"19","caption":"\u067e\u0627\u0644\u0627\u062f\u06cc\u0648\u0645","ask":"695","diff":"0","datemodify":1357884678,"max":"695","min":"695","avg":"695"},"platinum":{"name":"platinum","id":"18","caption":"\u067e\u0644\u0627\u062a\u06cc\u0646\u06cc\u0648\u 0645","ask":"1641","diff":"0","datemodify":1357884678,"max":"1641","min":"1641","avg":"1641"},"sekke-grm":{"name":"sekke-grm","id":"400","caption":"\u0633\u06a9\u0647 \u06af\u0631\u0645\u06cc","ask":"2170000","diff":"20000","datemodify":1357884676,"max":"2170000","min":"2170000","avg":"2170000"},"USD":{"name":"USD","caption":"\u062f\u0644\u0627\u0631 \u0622\u0645\u0631\u06cc\u06a9\u0627","ask":"11230","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"GBP":{"name":"GBP","caption":"\u067e\u0648\u0646\u062f \u0627\u0646\u06af\u0644\u06cc\u0633","ask":"17329","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"CHF":{"name":"CHF","caption":"\u0641\u0631\u0627\u0646\u06a9 \u0633\u0648\u06cc\u0633","ask":"11758","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"SEK":{"name":"SEK","caption":"\u06a9\u0631\u0648\u0646 \u0633\u0648\u0626\u062f","ask":"1618","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"NOK":{"name":"NOK","caption":"\u06a9\u0631\u0648\u0646 \u0646\u0631\u0648\u0698","ask":"1859","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"DKK":{"name":"DKK","caption":"\u06a9\u0631\u0648\u0646 \u062f\u0627\u0646\u0645\u0627\u0631\u06a9","ask":"1921","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"AED":{"name":"AED","caption":"\u062f\u0631\u0647\u0645 \u0627\u0645\u0627\u0631\u0627\u062a","ask":"3058","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"KWD":{"name":"KWD","caption":"\u062f\u06cc\u0646\u0627\u0631 \u06a9\u0648\u06cc\u062a","ask":"40260","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"PY100":{"name":"PY100","caption":"\u06cc\u06a9\u0635\u062f \u06cc\u0646 \u0698\u0627\u067e\u0646","ask":"14588","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"HKD":{"name":"HKD","caption":"\u062f\u0644\u0627\u0631 \u0647\u0646\u06af \u06a9\u0646\u06af","ask":"1447","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"OMR":{"name":"OMR","caption":"\u0631\u06cc\u0627\u0644 \u0639\u0645\u0627\u0646","ask":"29163","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"CAD":{"name":"CAD","caption":"\u062f\u0644\u0627\u0631 \u06a9\u0627\u0646\u0627\u062f\u0627","ask":"10926","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"ZAR":{"name":"ZAR","caption":"\u0631\u0627\u0646\u062f \u0622\u0641\u0631\u06cc\u0642\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc","ask":"1374","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"TRY":{"name":"TRY","caption":"\u0644\u06cc\u0631\u0647 \u062a\u0631\u06a9\u06cc\u0647","ask":"5978","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"RUB":{"name":"RUB","caption":"\u0631\u0648\u0628\u0644 \u0631\u0648\u0633\u06cc\u0647","ask":"350","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"QAR":{"name":"QAR","caption":"\u0631\u06cc\u0627\u0644 \u0642\u0637\u0631","ask":"3085","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"AUD":{"name":"AUD","caption":"\u062f\u0644\u0627\u0631 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627","ask":"11491","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"SAR":{"name":"SAR","caption":"\u0631\u06cc\u0627\u0644 \u0633\u0639\u0648\u062f\u06cc","ask":"2995","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"BHD":{"name":"BHD","caption":"\u062f\u06cc\u0646\u0627\u0631 \u0628\u062d\u0631\u06cc\u0646","ask":"29784","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"SGD":{"name":"SGD","caption":"\u062f\u0644\u0627\u0631 \u0633\u0646\u06af\u0627\u067e\u0648\u0631","ask":"8685","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"CNY":{"name":"CNY","caption":"\u06cc\u0648\u0627\u0646 \u0686\u06cc\u0646","ask":"1780","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"MYR":{"name":"MYR","caption":"\u0631\u06cc\u0646\u06af\u06cc\u062a \u0645\u0627\u0644\u0632\u06cc","ask":"3568","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"RW1000":{"name":"RW1000","caption":"\u06cc\u06a9 \u0647\u0632\u0627\u0631 \u0648\u0648\u0646 \u06a9\u0631\u0647 \u062c\u0646\u0648\u0628\u06cc","ask":"9677","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"EUR":{"name":"EUR","caption":"\u06cc\u0648\u0631\u0648","ask":"14284","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"},"BYR1000":{"name":"BYR1000","caption":"\u06cc\u06a9 \u0647\u0632\u0627\u0631 \u0631\u0648\u0628\u0644 \u0628\u0644\u0627\u0631\u0648\u0633","ask":"1330","diff":"0","datemodify":1325916000,"max":"0","min":"0","avg":"0"}},"atie":{"priceAtie0":{"tGheimat1":"","akhTaghirGH":"","akhTaghirD":"","sekke":"12,990,000"},"priceAtie1":{"tGheimat1":"-","akhTaghirGH":"-","akhTaghirD":"-","sekke":""},"priceAtie2":{"tGheimat1":"-","akhTaghirGH":"-","akhTaghirD":"-","sekke":""}},"priceGraph":{"28":"chart\/tmp\/chart28.png","25":"chart\/tmp\/chart25.png","23":"chart\/tmp\/chart23.png"},"utime":"09:41:18 22-10-1391"}

اطلاعات و با فرمت خاصی کنار هم قرار میده
با تلفیق { و } و : و ,
خوب هرچی دید قوی تری داشته باشید راحت تر با پترن نویسی و یا explode میتونید اطلاعات و بکشید بیرون
من راستش از دستا حر فه ای میخواام رو این فایل کار کنند تا همه اطلاعات و با ی ستاندارد خاص بکشند بیرون چون حتما وقتی با نظم کنار هم نوشته شده با نظم هم میشه بیرون کشوند اوناره
مشتری من قیمت ارز و میخواست که همون اوایل بود :

$homepage = substr($homepage,1,(strlen($homepage)-1));
$homepage = explode("}",$homepage,-2);

$mr_arz_ar = array();

$mr_arz = $homepage[0];
$mr_arz = explode("{",$mr_arz,3);

$mr_arz = $mr_arz[2];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);

$mr_arz_ar ['USD'] = $mr_arz;
////
$mr_arz = $homepage[1];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['INR'] = $mr_arz;
////
$mr_arz = $homepage[2];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['AED'] = $mr_arz;
////
$mr_arz = $homepage[3];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['JPY100'] = $mr_arz;
////
$mr_arz = $homepage[4];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['TRY'] = $mr_arz;
////
$mr_arz = $homepage[5];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['RUB'] = $mr_arz;
////
$mr_arz = $homepage[6];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['CNY'] = $mr_arz;
////
$mr_arz = $homepage[7];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['KRW1000'] = $mr_arz;
////
$mr_arz = $homepage[8];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['EUR'] = $mr_arz;


اینجوری کشیدمشون بالا
سرعت بالایی هم داره
خوبیش اسنه که سایت zcast اطلاعات خوبی میده و بهتر از اون اینه که اطلاعاتش و اینجوری رفرش میکنه که سرعت پردازش اون مشاوی با کار با فایل ساده است
یعنی ربات بخوایم بنویسیم سرعت وبی داره و پردازش خیلی سنگینی نیست

بنا به درخواست مشتریم از سایت http://www.sepandexchange.com/home.aspx هم نرخ ارز و گرفتم :

$homepage = file_get_contents('http://www.sepandexchange.com/home.aspx');
if (!$wsql->connect('string', $homepage)){
print 'Error while connecting: ' . $wsql->error;
exit;
}
if (!$wsql->query('SELECT * FROM table WHERE $id=="GridView1"')){
print "Query error: " . $wsql->error;
exit;
}


$arz2 = $wsql->fetch_array();
$arz2 = $arz2[0]['text'];

// get arz
$dom = new DOMDocument;
@$dom->loadHTML( mb_convert_encoding($arz2, 'HTML-ENTITIES', "UTF-8") );
$cells = array();
foreach( $dom->getElementsByTagName( 'td' ) as $td ) {
$cells[] = $td->nodeValue;
}

$arz2 = array();
$arz2[] = $cells[0];
$arz2[] = $cells[1];
$arz2[] = $cells[6];
$arz2[] = $cells[7];
$arz2[] = $cells[12];
$arz2[] = $cells[13];
$arz2[] = $cells[18];
$arz2[] = $cells[19];
$arz2[] = $cells[24];
$arz2[] = $cells[25];
$arz2[] = $cells[30];
$arz2[] = $cells[31];
$arz2[] = $cells[36];
$arz2[] = $cells[37];
$arz2[] = $cells[42];
$arz2[] = $cells[43];
$arz2[] = $cells[48];
$arz2[] = $cells[49];
$arz2[] = $cells[54];
$arz2[] = $cells[55];
$arz2[] = $cells[60];
$arz2[] = $cells[61];
$arz2[] = $cells[66];
$arz2[] = $cells[67];
$arz2[] = $cells[72];
$arz2[] = $cells[73];
$arz2[] = $cells[78];
$arz2[] = $cells[79];
$arz2[] = $cells[84];
$arz2[] = $cells[85];
$arz2[] = $cells[90];
$arz2[] = $cells[91];
$arz2[] = $cells[96];
$arz2[] = $cells[97];

خوب الان من 4 تا آرایه دارم که توش اطلاعات هست و ایندکس های اون پشت سر هم باید کنم
همه آرایه ها و با هم merge کردم

و زمان و تاریخ فارسی هم توش قرار دادم البته پست ها بالا هم گفتم فیلد time از نوع timestamp هست کار اصافی هست

$complete = array();
$complete = array_merge( $gold,$coin);
$complete = array_merge($complete, $mr_arz_ar);
$complete = array_merge($complete, $arz2);
$complete = array_merge($complete, array(date('H:i:s'),$persian->date('y/m/d')));

یک جدول داشتیم به اسم data
یک فیلد داشت به نام data از نوع text

همه اطلاعات و من با یک سمیکالون به هم چسبوندم و ریختم تو این فیلد


$db_info = implode(";",$complete);
$data = array();
$data['id']=null;
$data['data'] = $db_info;

$obj->insert_mysql("data",$data);

خوب هر 5 مین اجرا بشه این اسکریپت توسط کران جاب بانگ پر میشه
واسه همین مثلا 3 تا اطلاعات و باقی میزاریم بقیه که از تاریخ
گشتست و پاک میکنیم

$obj->query_mysql("DELETE FROM data WHERE time < current_timestamp - interval '15' minute;");

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

$ M 3 H R D A D $
جمعه 22 دی 1391, 09:36 صبح
اینم اسکریپت کامل :

<?php

if(!defined('ROOT')) {
define('ROOT', preg_replace('#\\\\#', '/', dirname(__FILE__)));
}
set_time_limit (0);
date_default_timezone_set('Asia/Tehran');

require_once ROOT.'/includes/class/SQLManager.class.php';
$obj = new SQLManager();
$result = $obj->query_mysql("SELECT * FROM `setting`");
$pass = $obj->array_mysql($result);
$pass = $pass["password"];

if(isset($_GET['password']) && $_GET['password']==$pass) {

require_once ROOT.'/includes/class/persian_date.class.php';
require_once ROOT.'/includes/class/snoopy.class.php';
require_once ROOT.'/includes/class/htmlsql.class.php';

$persian=new persian_date();

$homepage = file_get_contents("http://www.tgju.org/");
$wsql = new htmlsql();
if (!$wsql->connect('string', $homepage)){
print 'Error while connecting: ' . $wsql->error;
exit;
}
if (!$wsql->query('SELECT * FROM table WHERE $id=="gold_tbl"')){
print "Query error: " . $wsql->error;
exit;
}

$gold = $wsql->fetch_array();
$gold = $gold[0]['text'];
if (!$wsql->query('SELECT * FROM table WHERE $id=="coin_tbl"')){
print "Query error: " . $wsql->error;
exit;
}


$coin = $wsql->fetch_array();
$coin = $coin[0]['text'];

$dom = new DOMDocument;
$dom->loadHTML( $gold );
$cells = array();
foreach( $dom->getElementsByTagName( 'td' ) as $td ) {
$cells[] = $td->nodeValue;
}

$gold = array();
$gold['ons_tala'] = str_replace(",",'',$cells[1]);
$gold['ons_tala_taghir'] = $cells[2];
$gold['ons_tala_min'] = $cells[3];
$gold['ons_tala_max'] = $cells[4];
$gold['mesghal'] = str_replace(",",'',$cells[7]);
$gold['mesghal_taghir'] = $cells[8];
$gold['mesghal_min'] = $cells[9];
$gold['mesghal_max'] = $cells[10];
$gold['geram'] = str_replace(",",'',$cells[13]);
$gold['geram_taghir'] = $cells[14];
$gold['geram_min'] = $cells[15];
$gold['geram_max'] = $cells[16];
$gold['ons_noghre'] = str_replace(",",'',$cells[19]);
$gold['ons_noghre_taghir'] = $cells[20];
$gold['ons_noghre_min'] = $cells[21];
$gold['ons_noghre_max'] = $cells[22];


// get coin
$dom = new DOMDocument;
$dom->loadHTML( $coin );
$cells = array();
foreach( $dom->getElementsByTagName( 'td' ) as $td ) {
$cells[] = $td->nodeValue;
}

$coin = array();
$coin['bahar_azadi'] = str_replace(",",'',$cells[1]);
$coin['bahar_azadi_taghir'] = $cells[2];
$coin['bahar_azadi_min'] = $cells[3];
$coin['bahar_azadi_max'] = $cells[4];
$coin['bahar_azadi_arzesh'] = $cells[5];
//
$coin['emami'] = str_replace(",",'',$cells[8]);
$coin['emami_taghir'] = $cells[9];
$coin['emami_min'] = $cells[10];
$coin['emami_max'] = $cells[11];
$coin['emami_arzesh'] = $cells[12];
//
$coin['nim'] = str_replace(",",'',$cells[15]);
$coin['nim_taghir'] = $cells[16];
$coin['nim_min'] = $cells[17];
$coin['nim_max'] = $cells[18];
$coin['nim_arzesh'] = $cells[19];
//
$coin['rob'] = str_replace(",",'',$cells[22]);
$coin['rob_taghir'] = $cells[23];
$coin['rob_min'] = $cells[24];
$coin['rob_max'] = $cells[25];
$coin['rob_arzesh'] = $cells[26];
//
$coin['gerami'] = str_replace(",",'',$cells[29]);
$coin['gerami_taghir'] = $cells[30];
$coin['gerami_min'] = $cells[31];
$coin['gerami_max'] = $cells[32];
$coin['gerami_arzesh'] = $cells[33];

$homepage = file_get_contents('http://www.zcast.ir/getajax.php?'.rand());
//$homepage = file_get_contents('http://www.zcast.ir/ajax_price.am?'.rand());
$homepage = substr($homepage,1,(strlen($homepage)-1));
$homepage = explode("}",$homepage,-2);

$mr_arz_ar = array();

$mr_arz = $homepage[0];
$mr_arz = explode("{",$mr_arz,3);

$mr_arz = $mr_arz[2];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);

$mr_arz_ar ['USD'] = $mr_arz;
////
$mr_arz = $homepage[1];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['INR'] = $mr_arz;
////
$mr_arz = $homepage[2];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['AED'] = $mr_arz;
////
$mr_arz = $homepage[3];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['JPY100'] = $mr_arz;
////
$mr_arz = $homepage[4];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['TRY'] = $mr_arz;
////
$mr_arz = $homepage[5];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['RUB'] = $mr_arz;
////
$mr_arz = $homepage[6];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['CNY'] = $mr_arz;
////
$mr_arz = $homepage[7];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['KRW1000'] = $mr_arz;
////
$mr_arz = $homepage[8];
$mr_arz = explode("{",$mr_arz,3);
$mr_arz = $mr_arz[1];
$mr_arz = explode(",",$mr_arz);
$mr_arz = $mr_arz[2];
$mr_arz = explode(":",$mr_arz);
$mr_arz = str_replace('"','',$mr_arz[1]);
$mr_arz_ar ['EUR'] = $mr_arz;

$homepage = file_get_contents('http://www.sepandexchange.com/home.aspx');
if (!$wsql->connect('string', $homepage)){
print 'Error while connecting: ' . $wsql->error;
exit;
}
if (!$wsql->query('SELECT * FROM table WHERE $id=="GridView1"')){
print "Query error: " . $wsql->error;
exit;
}


$arz2 = $wsql->fetch_array();
$arz2 = $arz2[0]['text'];

// get arz
$dom = new DOMDocument;
@$dom->loadHTML( mb_convert_encoding($arz2, 'HTML-ENTITIES', "UTF-8") );
$cells = array();
foreach( $dom->getElementsByTagName( 'td' ) as $td ) {
$cells[] = $td->nodeValue;
}

$arz2 = array();
$arz2[] = $cells[0];
$arz2[] = $cells[1];
$arz2[] = $cells[6];
$arz2[] = $cells[7];
$arz2[] = $cells[12];
$arz2[] = $cells[13];
$arz2[] = $cells[18];
$arz2[] = $cells[19];
$arz2[] = $cells[24];
$arz2[] = $cells[25];
$arz2[] = $cells[30];
$arz2[] = $cells[31];
$arz2[] = $cells[36];
$arz2[] = $cells[37];
$arz2[] = $cells[42];
$arz2[] = $cells[43];
$arz2[] = $cells[48];
$arz2[] = $cells[49];
$arz2[] = $cells[54];
$arz2[] = $cells[55];
$arz2[] = $cells[60];
$arz2[] = $cells[61];
$arz2[] = $cells[66];
$arz2[] = $cells[67];
$arz2[] = $cells[72];
$arz2[] = $cells[73];
$arz2[] = $cells[78];
$arz2[] = $cells[79];
$arz2[] = $cells[84];
$arz2[] = $cells[85];
$arz2[] = $cells[90];
$arz2[] = $cells[91];
$arz2[] = $cells[96];
$arz2[] = $cells[97];
$complete = array();
$complete = array_merge( $gold,$coin);
$complete = array_merge($complete, $mr_arz_ar);
$complete = array_merge($complete, $arz2);
$complete = array_merge($complete, array(date('H:i:s'),$persian->date('y/m/d')));
$db_info = implode(";",$complete);
$data = array();
$data['id']=null;
$data['data'] = $db_info;

$obj->insert_mysql("data",$data);
$obj->query_mysql("DELETE FROM data WHERE time < current_timestamp - interval '15' minute;");
die();
}

?>

$ M 3 H R D A D $
دوشنبه 25 دی 1391, 21:58 عصر
دیدم استقبال زیاد نشد دیگه ادامه ندادم
اینم نمونه این پروژه فقط ایندکس داره بخش آنلاین و پیاده نکرم http://sabaexport.com/

shahriyar3
سه شنبه 26 دی 1391, 13:53 عصر
سلام
مرسی از آموزشی که گذاشتین
ولی دستور file_get_contents روی بیشتر هاست ها بدلیل امنیتی بسته هست
میتونید همین کار و ساده تر با http_request , pear یا با curl انجام بدید

$ M 3 H R D A D $
پنج شنبه 28 دی 1391, 13:05 عصر
درسته توضیحش و تو توضیحاتم دادم دقیقا ! میتونید از این کارها که شما گفتید استفاده بشه ممنون