• اطلاعیه ها

    • Saeed Fard

      پوشش زنده وردکمپ ۲۰۱۸ اروپا توسط وردپرس پارسی   23/03/97

      اگر کاربر وردپرس هستید حتما تا به حال اسم وردکمپ رو شنیدید، کمپ و دورهمی بزرگ توسعه‌دهنده‌ها و کاربران وردپرس که سالانه در کشورهای مختلف برگزار میشه تحت عنوان وردکمپ هستش که از سمت مراجع اصلی وردپرس حمایت و برگزار می‌شه.   این‌ بار در سال 2018 وردکمپ اروپا در شهر بلگراد کشور صربستان در حال برگزاری هستش، این رویداد طی سه روز 24 تا 26 تیر ماه (June 14-16) برگزار میشه، در این رویداد مصطفی صوفی از وردپرس پارسی و به نمایندگی تمامی کاربران وردپرس فارسی حضور داره. وردپرس پارسی رویداد وردکمپ 2018 اروپا رو به صورت زنده توسط مصطفی پوشش می‌ده و در صورت علاقه‌مندی به این مراسم می‌تونید از طریق وردپرس پارسی دنبالش کنید.در حال حاضر یک روز از این مراسم گذشته که گزارش اون در قسمت پوشش زنده قرار گرفته. برای دنبال کردن مراسم وردکمپ اروپا به صورت لحظه‌ای به صفحه پوشش زنده در قسمت زیر مراجعه کنید. همینطور در آینده منتظر خبر برگزاری اولین وردکمپ در ایران توسط وردپرس‌پارسی باشید. https://wp-parsi.com/wceu-2018

      لینک خبر در وردپرس پارسی : https://wp-parsi.com/wceu-2018-live  
sajjad_fx

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

6 پست در این موضوع قرار دارد

سلام خدمت دوستان و اساتید عزیز

یه مشکلی برام پیش اومده،ممنون میشم اگر بنده رو راهنمایی بفرمایید

میخوام لینک عکس هایی که درون تگ 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

از اساتید سپاسگذارم میشم اگه لطف بفرمایند بنده رو راهنمایی کنند

مرسی

یاعلی

ویرایش شده در توسط sajjad_fx
0

به اشتراک گذاری این پست


لینک به پست

مثال ساده :


$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://... هست رو پیدا کنم و تو متغیر بزارم؟

باز هم تشکر میکنم

0

به اشتراک گذاری این پست


لینک به پست

سلام

اساتید بزرگوار کسی نیست درمورد مشکل بالا بنده رو راهنمایی کنه؟

سپاسگذارم

0

به اشتراک گذاری این پست


لینک به پست

سلام.


<?php
foreach( $matches as $key ){
if( strpos( $key, 'http://' ) !== false ){
$editedarray[] = $key
}
}
?>

1

به اشتراک گذاری این پست


لینک به پست

سلام.

<?php

foreach( $matches as $key ){

if( strpos( $key, 'http://' ) !== false ){

$editedarray[] = $key

}

}

?>

سلام

دوست عزیز مرسی بابت پاسخت

میشه یکم بیشتر توضیح بفرمایید که چه طوری باید از این کد استفاده کنم؟ فقط تا اینقدر فهمیدم که این کد میاد چک میکنه که داخل متغیر key عبارت http داره یا نه، و اگر برابر با false نباشه مقدار true رو میده، باقشو متوجه نشدم حقیقت مخصوصا خط قرمز رو، بعد اینکه آیا نمیشه همین کار رو با regex انجام داد که فقط لینک های کامل و دارای http رو شناسایی کنه؟

مرسی از توجه شما

ویرایش شده در توسط sajjad_fx
0

به اشتراک گذاری این پست


لینک به پست

ببینید رجکس خیلی کند تر از 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

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری