sajjad_fx 8 ارسال شده در فروردین 94 گزارش بازنشر ارسال شده در فروردین 94 (ویرایش شده) سلام خدمت دوستان و اساتید عزیزیه مشکلی برام پیش اومده،ممنون میشم اگر بنده رو راهنمایی بفرماییدمیخوام لینک عکس هایی که درون تگ 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);[/left][left]توسط دستور preg_match اومدم کل تگ img رو ریختم داخل متغیر Matchesb و بعد دوباره با همین دستور ، دستور src رو شناسایی کردم و ریختم توی متغیر matchesc طوری که داخل متغیر matchesc فقط لینک عکس ها موجود باشه. متغیر matches هم داخلش همین پیج سورسی که بالا قید کردم هست... ولی همونطوری که گفتم دوستان موقعی که میخوام از متغیر آخر که لینکها توشه استفاده کنم چیزی نیست و عمل نمیکنهتو اینترنت گشتم این کد رو پیدا کردم:\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;به این حالت هم استفاده کردم :preg_match_all('\bhttps?:[^)''"]+\.(?:jpg|jpeg|gif|png)(?![a-z/])', $matches[1][0], $matchesb);این ارور رو داد:Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING inاز اساتید سپاسگذارم میشم اگه لطف بفرمایند بنده رو راهنمایی کنندمرسییاعلی ویرایش شده فروردین 94 توسط sajjad_fx نقل قول لینک به ارسال
sajjad_fx 8 ارسال شده در فروردین 94 مالک گزارش بازنشر ارسال شده در فروردین 94 مثال ساده :$words="<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>";preg_match_all("<img.+?src=[\"|'](.*?)[\"|'].+?>", $words, $matches);print_r($matches[1]);سلامبسیار ممنونم از راهنماییتون دوست عزیزبررسی کردم کد رو عمل میکنه فقط یه نکته، الان خروجی متغییر matches به این صورت هست:Array ( [0] => shares/img/print.gif [1] => shares/img/email.gif [2] => http://up.mlmarketing.ir/news/wpid-1956227265.jpg )چطوری میتونم بخش اول رو حذف کنم؟ به عبارتی فقط تگ های عکسی که لینک کامل به صورت http://... هست رو پیدا کنم و تو متغیر بزارم؟باز هم تشکر میکنم نقل قول لینک به ارسال
sajjad_fx 8 ارسال شده در فروردین 94 مالک گزارش بازنشر ارسال شده در فروردین 94 سلاماساتید بزرگوار کسی نیست درمورد مشکل بالا بنده رو راهنمایی کنه؟سپاسگذارم نقل قول لینک به ارسال
فرحان 997 ارسال شده در فروردین 94 گزارش بازنشر ارسال شده در فروردین 94 سلام.<?phpforeach( $matches as $key ){if( strpos( $key, 'http://' ) !== false ){ $editedarray[] = $key}}?> 1 نقل قول لینک به ارسال
sajjad_fx 8 ارسال شده در فروردین 94 مالک گزارش بازنشر ارسال شده در فروردین 94 (ویرایش شده) سلام.<?phpforeach( $matches as $key ){if( strpos( $key, 'http://' ) !== false ){$editedarray[] = $key}}?>سلامدوست عزیز مرسی بابت پاسختمیشه یکم بیشتر توضیح بفرمایید که چه طوری باید از این کد استفاده کنم؟ فقط تا اینقدر فهمیدم که این کد میاد چک میکنه که داخل متغیر key عبارت http داره یا نه، و اگر برابر با false نباشه مقدار true رو میده، باقشو متوجه نشدم حقیقت مخصوصا خط قرمز رو، بعد اینکه آیا نمیشه همین کار رو با regex انجام داد که فقط لینک های کامل و دارای http رو شناسایی کنه؟مرسی از توجه شما ویرایش شده فروردین 94 توسط sajjad_fx نقل قول لینک به ارسال
فرحان 997 ارسال شده در فروردین 94 گزارش بازنشر ارسال شده در فروردین 94 ببینید رجکس خیلی کند تر از strpos هست اما با regex هم میشه انجام داد. اون editedarray هم من فرض کرده که قبل از ورود به حلقه شما یه آرایه ی خالی دیگه درست کرده اید و اونایی که این مقدار http رو دارن دارید میریزید توش و در نهایت editedarray میشه نتیجه نهایی که شامل لینک های کامل هست. اون [] ها هم به این معنی هست که این مقدار رو به آرایه ی editedarray اضافه کن (در انتهای آرایه درج کن. push).با رجکس میشه به این صورت نوشت:<?php$editedarray = array();foreach( $matches as $key ){if( preg_match( '/^(http://)/', $key ) ){ $editedarray[] = $key}}?>توی سایت regexr.com هم قسمت کامیونیتی برید کدهای خوبی پیدا می کنید. همچنین آموزش و معرفی کدهای regex رو هم قرار داده اند.اما این نکته رو فراموش نکنید که regex آخرین راه حل هست و خیلی کندتر از strpos هست.موفق باشید. 1 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .