PDA

View Full Version : کمک در خصوص یافتن لینک عکس در یک سند با استفاده از عبارات با قاعده (Regular expressions)



sajjad405
دوشنبه 10 فروردین 1394, 19:24 عصر
سلام خدمت دوستان و اساتید عزیز
در ابتدا از مدیرای عزیز عذر خواهی میکنم از اینکه اینجا این تاپیک رو ایجاد کردم، کوتاهی بنده رو به بزرگواری خودتون ببخشید و این تاپیک رو در صورت صلاح دید به تالار مناسب منتقل فرمایید.
اما هدف از ایجاد این تاپیک:
دوستان من میخوام لینک عکس هایی که درون تگ img و داخل سند html هست (بعنوان مثال یک پیج سورس ) رو با استفاده از دستور العمل های منطقی regex تشخیص بدم و لینکش رو استخراج کنم...فرض کنید که کدهای داخل یک پیج سورس به این صورت هست:





<div class="nwstxtmainpane">
<div class="nwstxtlinkicons">
<span id="ctl00_bodyHolder_newstextDetail_newstxtActLink"><a class="lnk" href="printable.php?nn=13940109000599" target="_blank"><img border=0 src="shares/img/print.gif" width="25" alt="نسخه چاپي" /></a><a class="lnk" href="mail.php?nn=13940109000599" target="_blank"><img border=0 src="shares/img/email.gif" width="25" alt="ارسال به دوستان" /></a></span>
</div>
<div class="nwstxttoppane">
<div class="nwstxtnewsinfo">
<span id="ctl00_bodyHolder_newstextDetail_nwstxtInfoPane"><div class="nwstxtrotitr">هادی محمدی فر</div><div class="nwstxtinfotitle">حمله عربستان به یمن؛ چرایی، پیامدها و چالش های پیش رو</div><p class="nwstxtlead" style="line-height: 160%;">با توجه به نقش تعیین کننده جنگ زمینی، ماهیت رهبری انصارالله، و نقش تخریبی القاعده در یمن می توان گفت با وحدت جریان های سیاسی یمن و همدلی علمای یمن با کمیته های مردمی تمامی سناریوهای عربستان و رژیم صهیونیستی به حداقل خواهد رسید.</P></span>
</div>
<div class="nwstxtpic">
<span id="ctl00_bodyHolder_newstextDetail_nwstxtPicPane"><img alt="حمله عربستان به یمن؛ چرایی، پیامدها و چالش های پیش رو" title="حمله عربستان به یمن؛ چرایی، پیامدها و چالش های پیش رو" src='http://up.mlmarketing.ir/news/wpid-1956227265.jpg' /></span>
</div>
</div>

<div style="float: left; clear: both;">
<ul class="sociallnk">
<!--- TWITTER -->
<li>
<a href="https://twitter.com/share" class="twitter-share-button">Tweet</a>
</li>
<!--- GOOGLE PLUS -->
<li>
<div class="g-plusone" data-size="medium"></div>
</li>
<!--- FACEBOOK -->

<div style="clear: both;"></div>
</ul>

</div>




خوب همونطوری که میبینید یک تگ عکس درون این کد وجود داره، همچنین چندتا دستور src دیگه هم هست داخل کد، حالا خواسته ی من این هست که اولا تگ عکس رو شناسایی کنم، و درون یک متغیر بریزم، بعد از داخل این تگ بیام دستور src رو پیدا کنم و لینک عکس داخل کوتیشن ها رو استخراج کنم و بریزم داخل یک متغیر دیگه...
خودم تا یکجایی رفتم جلو ولی نمیدونم چرا کار نمیکنه:




preg_match_all("/<img alt([^`]*?)>/", $matches[1][0], $matchesb);

preg_match_all("/src=\"([^`]*?)\"/", $matchesb[1][0], $matchesc);

توسط دستور preg_match اومدم کل تگ img رو ریختم داخل متغیر Matchesb و بعد دوباره با همین دستور ، دستور src رو شناسایی کردم و ریختم توی متغیر matchesc طوری که داخل متغیر matchesc فقط لینک عکس ها موجود باشه. متغیر matches هم داخلش همین پیج سورسی که بالا قید کردم هست... ولی همونطوری که گفتم دوستان موقعی که میخوام از متغیر آخر که لینکها توشه استفاده کنم چیزی نیست و عمل نمیکنه
از اساتید سپاسگذارم میشم اگه لطف بفرمایند بنده رو راهنمایی کنند
مرسی
یاعلی

reza_alie
دوشنبه 10 فروردین 1394, 19:26 عصر
سلام اینجارو نگاه کن فکر کنی به کارت بیاد
http://stackoverflow.com/questions/169625/regex-to-check-if-valid-url-that-ends-in-jpg-png-or-gif
http://codereview.stackexchange.com/questions/20126/regex-to-get-all-image-links
http://code.tutsplus.com/tutorials/8-regular-expressions-you-should-know--net-6149

sajjad405
دوشنبه 10 فروردین 1394, 20:45 عصر
سلام اینجارو نگاه کن فکر کنی به کارت بیاد
http://stackoverflow.com/questions/169625/regex-to-check-if-valid-url-that-ends-in-jpg-png-or-gif
http://codereview.stackexchange.com/questions/20126/regex-to-get-all-image-links
http://code.tutsplus.com/tutorials/8-regular-expressions-you-should-know--net-6149

سلام رضا جان
مرسی داداش از لینک هایی که معرفی کردی
این کد چک کردم به نظر میرسه به کارم بیاد

\bhttps?:[^)''"]+\.(?:jpg|jpeg|gif|png)(?![a-z/])



، فقط یه نکته، چطوری این کد رو تو دستور preg_match_all استفاده کنم؟
این دو تا حالت رو امتحان کردم ارور داد داداش

preg_match_all("\bhttps?:[^)''"]+\.(?:jpg|jpeg|gif|png)(?![a-z/])", $matches[1][0], $matchesb);

preg_match_all(\bhttps?:[^)''"]+\.(?:jpg|jpeg|gif|png)(?![a-z/]), $matches[1][0], $matchesb);

sajjad405
دوشنبه 10 فروردین 1394, 20:49 عصر
به این حالت هم استفاده کردم :
preg_match_all('\bhttps?:[^)''"]+\.(?:jpg|jpeg|gif|png)(?![a-z/])', $matches[1][0], $matchesb);
این ارور رو داد:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in

a_arya
سه شنبه 11 فروردین 1394, 01:34 صبح
preg_match_all('/\bhttps?:[^)\'\'"]+\.(?:jpg|jpeg|gif|png)(?![a-z\/])/', $str, $matchesb);

j_naroogha@yahoo.com
سه شنبه 11 فروردین 1394, 13:30 عصر
اگر اصرار بر استفاده از reg نداری میتونی از اسکریپت آماده simplehtldom استفاده کنی
http://simplehtmldom.sourceforge.net/