چگونه src تگ img را در زبان برنامه‌نویسی PHP به دست آوریم؟

برنامه نویسان زبان محبوب پی اچ پی خیلی از اوقات با شرایطی مواجه می‌شوند که نیاز دارند تا مقادیر اتریبیوت های تگ های اچ تی ام ال را استخراج کنند و در جایی دیگر مورد استفاده قرار دهند. به طور مثال، زمانی که یک برنامه نویس بخواهد سایتی را اصطلاحاً Scrap کند و اطلاعات خاصی از آن را در سایت خودش نمایش دهد، نیاز به چنین کاری خواهد داشت (Scrap یا Crawl کردن به خواندن اطلاعات یک سایت،‌ ذخیره ی آن‌ها و نمایش مجدد آن‌ها در سایت دیگری گفته می شود.) در ادامه با سکان آکادمی همراه باشید تا چگونگی انجام این کار را مرور کنیم.

زمانی که ما اطلاعات یک تگ img را داشته باشیم، از طریق روش‌های متعددی می‌توانیم اطلاعات این تگ را استخراج کنیم که در این ترفند، دو روش معمول در زبان برنامه نویسی پی اچ پی را مورد بررسی قرار خواهیم داد.

روش اول: استفاده از کلاسی تحت عنوان DOMDocument
در زبان پی اچ پی، کلاسی تحت عنوان DOMDocument وجود دارد که این امکان را به برنامه نویسان می‌دهد تا یک ورودی HTML یا XML به آن داده سپس از متدهای از پیش تعریف شده برای این کلاس استفاده کرده تا بتوانند اتریبیوت هایی که نیاز دارند را استخراج کنند. برای شروع، تگ زیر را در نظر می گیریم:


<img src="/images/image.jpg" alt="Image" width="100" height="100" />

حال با ساخت یک آبجکت از روی کلاس DOMDocument تحت عنوان doc$ و فراخوانی متد ()loadHTML آن، متغیری تحت عنوان html$ که از قبل سورس اچ تی ام ال خود را در آن ذخیره کرده بود را به آن پاس می دهیم. سپس یک شیء جدید تحت عنوان xpath$ از روی کلاس DOMXPath می‌سازیم و آبجکت doc$ را که اکنون حاوی تگ های اچ تی ام است به آن پاس می دهیم.

در نهایت، یک متغیر دیگر تحت عنوان sourse$ ساخته و مقدار آن را برابر با شیء ساخته شده از روی کلاس DOMXPath به همراه فراخوانی متدی تحت عنوان ()evaluate قرار داده و "(string(//img/@src" را به عنوان پارامتر ورودی آن در نظر می گیریم:


$html = '<img src="/images/image.jpg" alt="Image" width="100" height="100" />';
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$source = $xpath->evaluate("string(//img/@src)");
echo $source; //Will return /images/image.jpg

اکنون اگر متغیر source$ را با استفاده از دستور echo چاپ کنیم، خواهیم دید که مقدار images/image.jpg نمایش داده خواهد شد.

روش دوم: استفاده از فانکشن preg_match
در زبان پی اچ پی، تابعی از پیش تعریف شده وجود دارد تحت عنوان preg_match که استفاده از Regex که مخفف واژگان Regular Expression است را برای ما ساده می سازد. در این روش، کدهایی با استفاده از رجیکس می نویسیم که در یک استرینگ بگردد و هر کجا که یک تگ img دید، اتریبویت src آن را استخراج کرده و مقدار آن را بازگرداند:


$html = '<img src="/images/image.jpg" alt="Image" width="100" height="100" />';
preg_match( '@src="([^"]+)"@' , $html, $match );
$source = array_pop($match);
echo $source; //Will return /images/image.jpg

در تابع ()preg_match دستور داده ایم که متغیری تحت عنوان html$ جستجو شود و مقدار اتریبیوت src آن بیرون کشیده شده و داخل متغیری تحت عنوان match$ ریخته شود. از این پس، متغیر match$ همچون آرایه یی است که دو مقدار دارد که ما صرفا مقدار اول آن را نیاز داریم. پس با استفاده از فانکشن ()array_pop زبان برنامه نویسی پی اچ پی، مقدار دوم آن را حذف کرده و در نهایت خواهیم دید که با استفاده از دستور echo چگونه می توان مقدار اتریبیوت src را به دست آوریم.

Get Image Src With PHP

0


بهزاد مرادی

از جمله علائقم می‌شه به نشر علم،‌ سرمایه‌گذاری روی نسل آینده، برنامه‌نویسی به خصوص زبان PHP و جامعهٔ اپن‌سورس و همچنین راه‌اندازی استارتاپ و کارآفرینی اشاره کرد و اعتقاد دارم که سکان آکادمی می‌تونه بستری باشه که از اون طریق به علائقم جامهٔ عمل بپوشونم!






از طریق این فرم، می توانید بدون ثبت نام نظر دهید و یا اگر قبلا ثبت نام کرده اید، با ورود ناحیه ی کاربری می توانید علاوه بر ثبت نظر، به مدیریت نظرات خود نیز بپردازید.
(فیلد اجباری)
(فیلد اجباری)
(فیلد اجباری)
(فیلد اجباری)