PDA

View Full Version : کمک در patern نویسی برای استخراج اطلاعات یک جدول با سرعت ایده آل



$ M 3 H R D A D $
سه شنبه 10 اسفند 1389, 22:45 عصر
سلام من یک صفحه دارم که توش جدولی داره
احتیاج به مقادیر این جدول دارم و البته نیاز به نام کلاس و ایدی اون
من اطلاعات این جدول و میزارم کسی می تونه کمکم کنه
http://csa-iausari.com/text.htm


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title></title>
<style type="text/css">

table{

font-family:Tahoma;
font-size:8pt;
direction:rtl;
}


</style>
</head>

<body>
<table class="GridView" cellspacing="0" rules="all" border="1" id="ctl00_ContentPlaceHolder1_grdpasokh" style="width:100%;border-collapse:collapse;">
<tr class="GridViewHeader" align="center" valign="middle">
<th scope="col">&nbsp;</th>
<th scope="col">تاریخ </th>
<th scope="col">روز</th>
<th scope="col">نوبت</th>
<th scope="col">نام غذا</th>
<th scope="col">تعداد </th>
<th scope="col">قیمت </th>
<th scope="col">قیمت روز</th>
<th scope="col">وضعیت</th>
<th scope="col">&nbsp;</th>
</tr>
<tr class="GridViewRow">
<td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl02_lnkBtnDe lete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl02$lnkBtnDelete','')">حذف رزرو</a>
</td>
<td style="width:60px;">
<span id="ctl00_ContentPlaceHolder1_grdpasokh_ctl02_lblDateE xam1" style="font-family:tahoma;font-size:10px;">
10/12/89</span>
</td><td style="width:70px;">سه شنبه</td><td style="width:50px;">ناهار</td><td style="width:230px;">
چلو مرغ</td><td style="width:30px;">&nbsp;</td><td style="width:70px;">
3000</td><td style="width:70px;">3000</td><td>مصرف شده</td><td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl02_lnkBtnsa bt" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl02$lnkBtnsabt','')">
ثبت رزرو</a>

</td>
</tr><tr class="GridViewAlternatingRow">
<td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl03_lnkBtnDe lete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl03$lnkBtnDelete','')">
حذف رزرو</a>
</td><td style="width:60px;">
<span id="ctl00_ContentPlaceHolder1_grdpasokh_ctl03_lblDateE xam1" style="font-family:tahoma;font-size:10px;">
11/12/89</span>
</td><td style="width:70px;">چهار شنبه</td><td style="width:50px;">ناهار</td><td style="width:230px;">
خورشت قورمه سبزي</td><td style="width:30px;">&nbsp;</td><td style="width:70px;">
3000</td><td style="width:70px;">3000</td><td>خريد غذا</td><td style="width:60px;">

<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl03_lnkBtnsa bt" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl03$lnkBtnsabt','')">
ثبت رزرو</a>
</td>
</tr><tr class="GridViewRow">
<td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl04_lnkBtnDe lete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl04$lnkBtnDelete','')">
حذف رزرو</a>
</td><td style="width:60px;">
<span id="ctl00_ContentPlaceHolder1_grdpasokh_ctl04_lblDateE xam1" style="font-family:tahoma;font-size:10px;">
12/12/89</span>
</td><td style="width:70px;">پنج شنبه</td><td style="width:50px;">ناهار</td><td style="width:230px;">
چلو کباب</td><td style="width:30px;">&nbsp;</td><td style="width:70px;">
3000</td><td style="width:70px;">3000</td><td>خريد غذا</td><td style="width:60px;">

<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl04_lnkBtnsa bt" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl04$lnkBtnsabt','')">
ثبت رزرو</a>
</td>
</tr><tr class="GridViewAlternatingRow">
<td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl05_lnkBtnDe lete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl05$lnkBtnDelete','')">
حذف رزرو</a>
</td><td style="width:60px;">
<span id="ctl00_ContentPlaceHolder1_grdpasokh_ctl05_lblDateE xam1" style="font-family:tahoma;font-size:10px;">
14/12/89</span>
</td><td style="width:70px;">شنبه</td><td style="width:50px;">ناهار</td><td style="width:230px;">
سبزي پلو با گوشت</td><td style="width:30px;"> -- </td><td style="width:70px;">
3000</td><td style="width:70px;">3000</td><td> -- </td><td style="width:60px;">

<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl05_lnkBtnsa bt" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl05$lnkBtnsabt','')">
ثبت رزرو</a>
</td>
</tr><tr class="GridViewRow">
<td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl06_lnkBtnDe lete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl06$lnkBtnDelete','')">
حذف رزرو</a>
</td><td style="width:60px;">
<span id="ctl00_ContentPlaceHolder1_grdpasokh_ctl06_lblDateE xam1" style="font-family:tahoma;font-size:10px;">
15/12/89</span>
</td><td style="width:70px;">يکشنبه</td><td style="width:50px;">ناهار</td><td style="width:230px;">
چلو مرغ</td><td style="width:30px;"> -- </td><td style="width:70px;">
3000</td><td style="width:70px;">3000</td><td> -- </td><td style="width:60px;">

<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl06_lnkBtnsa bt" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl06$lnkBtnsabt','')">
ثبت رزرو</a>
</td>
</tr><tr class="GridViewAlternatingRow">
<td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl07_lnkBtnDe lete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl07$lnkBtnDelete','')">
حذف رزرو</a>
</td><td style="width:60px;">
<span id="ctl00_ContentPlaceHolder1_grdpasokh_ctl07_lblDateE xam1" style="font-family:tahoma;font-size:10px;">
16/12/89</span>
</td><td style="width:70px;">دوشنبه</td><td style="width:50px;">ناهار</td><td style="width:230px;">
خورشت قورمه سبزي</td><td style="width:30px;">&nbsp;</td><td style="width:70px;">
3000</td><td style="width:70px;">3000</td><td>خريد غذا</td><td style="width:60px;">

<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl07_lnkBtnsa bt" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl07$lnkBtnsabt','')">
ثبت رزرو</a>
</td>
</tr><tr class="GridViewRow">
<td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl08_lnkBtnDe lete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl08$lnkBtnDelete','')">
حذف رزرو</a>
</td><td style="width:60px;">
<span id="ctl00_ContentPlaceHolder1_grdpasokh_ctl08_lblDateE xam1" style="font-family:tahoma;font-size:10px;">
17/12/89</span>
</td><td style="width:70px;">سه شنبه</td><td style="width:50px;">ناهار</td><td style="width:230px;">
چلو کباب</td><td style="width:30px;">&nbsp;</td><td style="width:70px;">
3000</td><td style="width:70px;">3000</td><td>خريد غذا</td><td style="width:60px;">

<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl08_lnkBtnsa bt" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl08$lnkBtnsabt','')">
ثبت رزرو</a>
</td>
</tr><tr class="GridViewAlternatingRow">
<td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl09_lnkBtnDe lete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl09$lnkBtnDelete','')">
حذف رزرو</a>
</td><td style="width:60px;">
<span id="ctl00_ContentPlaceHolder1_grdpasokh_ctl09_lblDateE xam1" style="font-family:tahoma;font-size:10px;">
18/12/89</span>
</td><td style="width:70px;">چهار شنبه</td><td style="width:50px;">ناهار</td><td style="width:230px;">
خورشت قيمه</td><td style="width:30px;">&nbsp;</td><td style="width:70px;">
3000</td><td style="width:70px;">3000</td><td>خريد غذا</td><td style="width:60px;">

<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl09_lnkBtnsa bt" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl09$lnkBtnsabt','')">
ثبت رزرو</a>
</td>
</tr><tr class="GridViewRow">
<td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl10_lnkBtnDe lete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl10$lnkBtnDelete','')">
حذف رزرو</a>
</td><td style="width:60px;">
<span id="ctl00_ContentPlaceHolder1_grdpasokh_ctl10_lblDateE xam1" style="font-family:tahoma;font-size:10px;">
19/12/89</span>
</td><td style="width:70px;">پنج شنبه</td><td style="width:50px;">ناهار</td><td style="width:230px;">
چلو مرغ</td><td style="width:30px;"> -- </td><td style="width:70px;">
3000</td><td style="width:70px;">3000</td><td> -- </td><td style="width:60px;">

<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl10_lnkBtnsa bt" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl10$lnkBtnsabt','')">
ثبت رزرو</a>
</td>
</tr><tr class="GridViewAlternatingRow">
<td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl11_lnkBtnDe lete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl11$lnkBtnDelete','')">
حذف رزرو</a>
</td><td style="width:60px;">
<span id="ctl00_ContentPlaceHolder1_grdpasokh_ctl11_lblDateE xam1" style="font-family:tahoma;font-size:10px;">
21/12/89</span>
</td><td style="width:70px;">شنبه</td><td style="width:50px;">ناهار</td><td style="width:230px;">
خورشت قورمه سبزي</td><td style="width:30px;"> -- </td><td style="width:70px;">
3000</td><td style="width:70px;">3000</td><td> -- </td><td style="width:60px;">

<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl11_lnkBtnsa bt" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl11$lnkBtnsabt','')">
ثبت رزرو</a>
</td>
</tr><tr class="GridViewRow">
<td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl12_lnkBtnDe lete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl12$lnkBtnDelete','')">
حذف رزرو</a>
</td><td style="width:60px;">
<span id="ctl00_ContentPlaceHolder1_grdpasokh_ctl12_lblDateE xam1" style="font-family:tahoma;font-size:10px;">
22/12/89</span>
</td><td style="width:70px;">يکشنبه</td><td style="width:50px;">ناهار</td><td style="width:230px;">
چلو کباب</td><td style="width:30px;"> -- </td><td style="width:70px;">
3000</td><td style="width:70px;">3000</td><td> -- </td><td style="width:60px;">

<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl12_lnkBtnsa bt" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl12$lnkBtnsabt','')">
ثبت رزرو</a>
</td>
</tr><tr class="GridViewAlternatingRow">
<td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl13_lnkBtnDe lete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl13$lnkBtnDelete','')">
حذف رزرو</a>
</td><td style="width:60px;">
<span id="ctl00_ContentPlaceHolder1_grdpasokh_ctl13_lblDateE xam1" style="font-family:tahoma;font-size:10px;">
23/12/89</span>
</td><td style="width:70px;">دوشنبه</td><td style="width:50px;">ناهار</td><td style="width:230px;">
خورشت قيمه</td><td style="width:30px;"> -- </td><td style="width:70px;">
3000</td><td style="width:70px;">3000</td><td> -- </td><td style="width:60px;">

<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl13_lnkBtnsa bt" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl13$lnkBtnsabt','')">
ثبت رزرو</a>
</td>
</tr><tr class="GridViewRow">
<td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl14_lnkBtnDe lete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl14$lnkBtnDelete','')">
حذف رزرو</a>
</td><td style="width:60px;">
<span id="ctl00_ContentPlaceHolder1_grdpasokh_ctl14_lblDateE xam1" style="font-family:tahoma;font-size:10px;">
24/12/89</span>
</td><td style="width:70px;">سه شنبه</td><td style="width:50px;">ناهار</td><td style="width:230px;">
چلو مرغ</td><td style="width:30px;"> -- </td><td style="width:70px;">
3000</td><td style="width:70px;">3000</td><td> -- </td><td style="width:60px;">

<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl14_lnkBtnsa bt" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl14$lnkBtnsabt','')">
ثبت رزرو</a>
</td>
</tr><tr class="GridViewAlternatingRow">
<td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl15_lnkBtnDe lete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl15$lnkBtnDelete','')">
حذف رزرو</a>
</td><td style="width:60px;">
<span id="ctl00_ContentPlaceHolder1_grdpasokh_ctl15_lblDateE xam1" style="font-family:tahoma;font-size:10px;">
25/12/89</span>
</td><td style="width:70px;">چهار شنبه</td><td style="width:50px;">ناهار</td><td style="width:230px;">
سبزي پلو با گوشت</td><td style="width:30px;">&nbsp;</td><td style="width:70px;">
3000</td><td style="width:70px;">3000</td><td>خريد غذا</td><td style="width:60px;">

<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl15_lnkBtnsa bt" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl15$lnkBtnsabt','')">
ثبت رزرو</a>
</td>
</tr><tr class="GridViewRow">
<td style="width:60px;">
<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl16_lnkBtnDe lete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl16$lnkBtnDelete','')">
حذف رزرو</a>
</td><td style="width:60px;">
<span id="ctl00_ContentPlaceHolder1_grdpasokh_ctl16_lblDateE xam1" style="font-family:tahoma;font-size:10px;">
26/12/89</span>
</td><td style="width:70px;">پنج شنبه</td><td style="width:50px;">ناهار</td><td style="width:230px;">
چلو کباب</td><td style="width:30px;"> -- </td><td style="width:70px;">
3000</td><td style="width:70px;">3000</td><td> -- </td><td style="width:60px;">

<a id="ctl00_ContentPlaceHolder1_grdpasokh_ctl16_lnkBtnsa bt" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1 $grdpasokh$ctl16$lnkBtnsabt','')">
ثبت رزرو</a>
</td>
</tr>
</table>
</body>

</html>

امیـرحسین
سه شنبه 10 اسفند 1389, 23:00 عصر
فکر میکنم اگر با Tidy این Table رو استاندارد کنید (اگه نیست) و بعد توسط SimpleXML به سادگی پردازش کنید روش خوبی باشه.

$ M 3 H R D A D $
سه شنبه 10 اسفند 1389, 23:22 عصر
ممنون امیر حسین جان
ما اینجا دو نوع <tr> داریم اونم به خاط اینکه هر سطر رنگ با رنگه
دو نو ع تیبل رو ما با کلاس های مختلف هست



<tr class="GridViewRow">

<tr class="GridViewAlternatingRow">

یعنی دو نوع سطر
یک پترن که بگه اگه سطر بود و از کلاس 1 یا 2 بود خروجی کن
و بعد وسط این سطر میشه راحتتر سرچ کرد
xml و که فرمودید بیشتر توضیح بدید لطفا


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

امیـرحسین
چهارشنبه 11 اسفند 1389, 00:18 صبح
من متوجه نشدم شما خودتون نمونه کد کامل گذاشتید. مشکلتون چیه؟

$str = '
<table>
<tr class="GridViewAlternatingRow">
<td><a>حذف رزرو</a></td>
<td><span>25/12/89</span></td>
<td>چهار شنبه</td>
<td>ناهار</td>
<td>سبزي پلو با گوشت</td>
<td>&nbsp;</td>
<td>3000</td>
<td>3000</td>
<td>خريد غذا</td>
<td><a>ثبت رزرو</a> </td>
</tr>

<tr class="GridViewRow">
<td><a>حذف رزرو</a></td>
<td><span>26/12/89</span></td>
<td>پنج شنبه</td>
<td>ناهار</td>
<td>چلو کباب</td>
<td> -- </td>
<td>3000</td>
<td>3000</td>
<td> -- </td>
<td><a>ثبت رزرو</a></td>
</tr>
</table>
';

$dom = new DOMDocument;
$dom->loadHTML($str);
foreach($dom->getElementsByTagName('tr') as $tr){
if($tr->getAttribute('class')=='GridViewAlternatingRow') {
echo 'Hello';
}
}
$dom = null;

$ M 3 H R D A D $
چهارشنبه 11 اسفند 1389, 00:43 صبح
ممنون مشکلم رفع شد من می خوام نام آیدی هر دیتا در هر سطر و داشته باشم
حتی هر لینکی که تو هر سطر هست و استخراج کنم که تو اون لینک یک جاوا و صدا می زنه ورودی اون تابع و می خوام
اگه مطلبی در مورد DOMDocument دارید بدید به من البته هنوز سرچ نکردم