رفتن به مطلب

جدا سازی تگ های 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");

 

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

 

موفق باشید

  • امتیاز 2
لینک به ارسال

لطفا برای ارسال دیدگاه وارد شوید

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



ورود به حساب کاربری
×
×
  • اضافه کردن...