• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل با preg_match_all
#1
سلام
دوستان کد زیر رو نگاه کنین :
کد پی‌اچ‌پی:
<?php
$matn 
'
  <tr class="hl" >
   <td class="ra  fc" >2944.</td>
   <td class="pla " ><a href="spieler.php?uid=1050">Zzz</a> </td>
   <td class="al " >-</td>
   <td class="pop " >1041</td>
   <td class="vil  lc" >4</td>
  </tr>
'
;
preg_match_all("#
  <tr class=\"hl\" >
   <td class=\"ra  fc\" >(.*?)</td>
   <td class=\"pla \" ><a href=\"spieler.php?uid=(.*?)\">Zzz</a> </td>
   <td class=\"al \" >(.*?)</td>
   <td class=\"pop \" >(.*?)</td>
   <td class=\"vil  lc\" >(.*?)</td>
  </tr>
#i"
$matn$outPREG_PATTERN_ORDER);

echo 
$out[1][0] . "," $out[1][1] . "," $out[1][2] . "," $out[1][3] . "," $out[1][4] .  "\n";
?>
در کد بالا میخواستم اطلاعاتی مثل 2944. و 1050 و - و 1041 و 4 رو از متغیر $matn استخراج کنم....Undecided
ولی مشکل پیدا کردم و خروجی بهم نمیده!
ایا روشم اشتباهه؟! روش مدنظرتون چیه که از یک متن بشه با پترن های مختلف استخراج کرد!؟Huh

باتشکر Heart
  پاسخ
تشکر شده توسط :
#2
کد پی‌اچ‌پی:
preg_match_all('@<td.*?>([^<]+)</td>@i',$str,$match);
            
print_r($match[1]); 
  پاسخ
تشکر شده توسط : faghani hidensoft
#3
این روش رو امتحان کرده بودم ، عبارت Zzz رو بخاطر اینکه بین دو تگ <a و </a> هست رو حساب نمیکنه! و [1][1] ارایه خالی خروجی میده!
در ضمن ، من میخواستم از رشته زیر خروجی بگیرم ... یعنی مثل رشته زیر باشه... چون توی اون صفحه ای که میخوام استخراج کنم ، فقط این چند خط بدین شکل (با class="" های متفاوت) هستند و بقیه همه به صورت <td> و </td> هستند و خروجی گرفتنش با این دستور شما غیر ممکنه!!!Huh
رشته :
کد پی‌اچ‌پی:
<tr class="hl" >
   <
td class="ra  fc" >2944.</td>
   <
td class="pla " ><a href="spieler.php?uid=1050">Zzz</a> </td>
   <
td class="al " >-</td>
   <
td class="pop " >1041</td>
   <
td class="vil  lc" >4</td>
  </
tr

لطفا کمک کنید....
  پاسخ
تشکر شده توسط :
#4
کد پی‌اچ‌پی:
preg_match_all('@<td.*?>(.+?)</td>@i',$str,$match); 


کد پی‌اچ‌پی:
preg_match_all('@<td.*?>.*?</td>@i',$str,$match);
             
print_r(array_map("strip_tags",$match[0])); 
  پاسخ
تشکر شده توسط : hidensoft
#5
شما اون متن رو در نظر نگیر....
تگ <td> توی متنی که من میگم برای اون مورد خواص (Zzz و ...) همش درحال جابجایی است! یه بار بالا و یکبار پایینتر!
بهتره پترن رو به صورت هماهنگ در بیاریم...
من حدود 100 تا تگ <td> دارم توی متن و هربار اون موردی از <td> رو که میخوام جاش فرق میکنه! یکبار $match[0] و یکبار دیگه $match[3] و یکبار دیگه $match[6] و $match[8] و $match[2] و... هست!!!!Confused
  پاسخ
تشکر شده توسط :
#6
دوست عزیز چرا سئوالتون رو عوض میکنید ؟
شما گفتید یه regex میخواید که محتوای تگ td رو برگردونه درسته یا خیر؟Confused
در ضمن بنده از کجا بدونم در اون سایتی که دارید از این regex استفاده میکنید چی داره تا من بر اساس اون یه چیزی به شما بدم ؟( مگر اینکه سایت رو بزارید اینجا )
یک مثال هم در پست اول زدید که regex کاملا باهاش سازگاره.
  پاسخ
تشکر شده توسط :
#7
faghani فکر کنم وقتی که سوال رو درست مطرح نمی کنی نباید توقع جواب صحیح رو هم داشته باشی
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان