• 1 رای - 4 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
preg_match
#1
سلام من میخواهم محتویات بین دو تگ به صورت زیر رو بگیرم اما نمیشه میشه کمک کنین؟

کد پی‌اچ‌پی:
$text = <<<HTML

                <table border=0 align=center  width=95% cellpadding=2 cellspacing=0 id="NewsText" bgcolor=white>
                <tr> <td height=3  colspan=3 ><center><hr height=1 width=65% bgcolor=#999999 ></center></td></tr> 
                <tr>

                <td colspan=3  style="BORDER-COLLAPSE:collapse;font-family: tahoma;font-size:12;"><p align=justify>
<font face="tahoma" color="#000" size=2>
                <p align="justify"><font face="Tahoma">&nbsp;&nbsp; </font><font face="Tahoma">&nbsp;فصل جديد رقابت&zwnj;هاي فوتبال قهرماني دسته اول باشگاه&zwnj;هاي ايران، ليگ آزادگان، صبح امروز قرعه کشي شد و 28 تيم حاضر در اين مسابقات در دو گروه 14 تيمي قرار گرفتند. </font></p>
<p align="justify"><font face="Tahoma">* گروه&zwnj;بندي رقابت&zwnj;هاي ليگ دسته اول در فصل 90 - 91 به اين شرح است: <br />
گروه اول: پيکان تهران، استيل&zwnj;آذين سمنان، گسترش فولاد تبريز، ابومسلم مشهد، فولاد يزد، صنعت ساري، اتکا گلستان، ايران&zwnj;جوان بوشهر، مس رفسنجان، شهرداري اراک، پيام شيراز، شهرداري بندرعباس، داماش تهران، سايپاي قائمشهر. </font></p>

<p align="justify"><font face="Tahoma">گروه دوم: پاس همدان، آلومينيوم هرمزگان، نساجي مازندران، شهرداري ياسوج، تربيت يزد، نفت مسجد سليمان، شيرين&zwnj;فراز کرمانشاه، گل&zwnj;گهر سيرجان، برق شيراز، کاوه تهران، ماشين&zwnj;سازي تبريز، داماش دورود، استقلال جنوب، نيروي زميني. </font></p>
<p align="justify"><font face="Tahoma">غلامرضا بهروان، رئيس سازمان ليگ آزادگان با تاييد اين خبر گفت: هفته اول رقابت&zwnj;هاي ليگ دسته اول فوتبال 11 شهريور آغاز خواهد شد. </font></p>
<p align="justify"><font face="Tahoma"></font>&nbsp;</p>
</font>
                </p></td> 
                </tr> 
                </table> 
HTML;

preg_match('/<td colspan=3  style="BORDER-COLLAPSE:collapse;font-family: tahoma;font-size:12;">(.*?)\<\/td\>/'$text$match);

echo 
"<pre>";
print_r($match); 
  پاسخ
تشکر شده توسط :
#2
فرهاد جان از كد زير استفاده كن :
کد پی‌اچ‌پی:
preg_match('/<td colspan=3  style="BORDER-COLLAPSE:collapse;font-family: tahoma;font-size:12;">(.*?)\<\/td\>/s'$text$match); 

چون درون متن از Newline استفاده ميشه بايد به جاي / در اخر پترن از s/ استفاده كني .

موفق باشي
  پاسخ
تشکر شده توسط : hosseintdk775
#3
امیر جان بهتره از فاصله استفاده نکنید در پترن هاتون. بجای تمام فاصله ها بنویسید [\s]+
همینطور به خاطر داشته باش که کاراکتر < و > نیازی به اسکیپ شدن ندارن. و \i باید حتماً استفاده بشه تا بگیم که به بزرگ یا کوچ بودن حروف حساس نباشه. همینطور بخاطر داشته باش که \s به معنی این نیست که از newline استفاده شده یا نه ! بلکه به این معنیه به اولین مورد مشابه که بر خورد دست نگه داره.
بهتره الگو هم در اینجا بصورت (.+?) بنویسیم چون ممکنه یک کاراکتر دو بار یا بیش از دو بار پشت سر هم تکرار شده باشه.
پتر شما میشه درستش زیر:
کد پی‌اچ‌پی:
preg_match("/<td[\s]+colspan=3[\s]+style=\"BORDER-COLLAPSE:collapse;font-family:[\s]+tahoma;font-size:12;\">(.+?)<\/td>/is"$text$match); 
غایب
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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