رفتن به مطلب

جدا سازی تگ های html بر اساس کلاس آنها در php


پست های پیشنهاد شده

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

 

بعد از مدت های زیادی برای من سعادت بزرگی هست که در جمع دوستان وردپرس پارسی هستم. راستش نیاز به یک کد دارم تا بتونه در یک string که داخل یک متغییر php ذخیره شده جستجو کنه و یک تگ با یک class خاص را پیدا و کل اون تگ با محتویات داخلش را برگردونه. مثل نمونه زیر :

متغییر string با این مقدار هست:

$string = '<div class="page><span>hello</span> <div class="one">one</div><div class="two">two</div><div class="ok">ok</div></div>';

حالا یه تابع باشه مثل تابع زیر کلاس تگ html را بهش بدیم و اون تگ و محتویاتش را برگردونه:

$result = get_html_content('.two');

و در نهایت خورجی بشه:

<div class="two">two</div>

 

پیشاپیش از همه دوستانی که همکاری می کنند تشکر می کنم

لینک به ارسال

سلام و درود

 

تابع get_html_content به شکل زیر میشه:

function get_html_content($str, $selector) {
	
	$mode = substr($selector, 0, 1);

	switch($mode) {
		
		case "#":
			$id = ltrim($selector, "#");
			$xpath_selector = "//*[@id='$id']";
			break;
		case ".":
			$class = ltrim($selector, ".");
			$xpath_selector = "//*[@class='$class']";
			break;
		default:
			$xpath_selector = "//$selector";
		
	}

	$dom = new DOMDocument();
	@$dom->loadHTML(mb_convert_encoding($str, 'HTML-ENTITIES', 'UTF-8'));
	$xpath = new DOMXpath($dom);
	$xpq = $xpath->query($xpath_selector);

	if($xpq->length === 0)
		return "هیچ موردی یافت نشد";
		
	return trim(preg_replace('/^<!DOCTYPE.+?>/', '', str_replace(array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $dom->saveHTML($xpq->item(0)))));
	
}

 

و مثلا بخواید کل div هایی که کلاسشون two هست رو براتون نمایش بده این شکلی میشه:

$str = '<div class="page"><span>hello</span><div class="one">one</div><div class="two">two</div><div class="ok">ok</div></div>';
$result = get_html_content($str, ".two");

 

البته سلکت بر اساس آیدی و نام تگ هم ساپورت میکنه.

 

موفق باشید

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...