سعید شعبانی

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

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

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

 

بعد از مدت های زیادی برای من سعادت بزرگی هست که در جمع دوستان وردپرس پارسی هستم. راستش نیاز به یک کد دارم تا بتونه در یک 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>

 

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

0

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


لینک به پست

سلام و درود

 

تابع 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

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


لینک به پست

خیلی ممنونم

0

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


لینک به پست
در 7 دقیقه قبل، سعید شعبانی گفته است :

خیلی ممنونم

خواهش میکنم.

موفق باشید

0

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


لینک به پست

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

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

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

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


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

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

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


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

  • مطالب مشابه

    • توسط Rasoul
      سلام
      من میخواستم وقتی صفحه اسکرول میشه و هدر همراهش میاد پایین به هدر یه لگو مثلا اضافه بشه میدونم باید با جاوااسکریپ انجام بشه ولی من این زبان را تا این حد بلد نیستم ممنون میشم راهنماییم کنید.
      الان تو این دمو میخوام وقتی اسکرول میشه کنار My Header یک لوگو اضافه بشه و وقتی دوباره میبری بالا حذف بشه.
       
      دمو
    • توسط masoudmosleh267
      سلام دوستان عزيز. خواستم بدونم امكانش هست كه بنده يك سايت وردپرسي كه ٢٠ تا افزونه روش نصبه رو تبديل كنم به لاراول و رو اون فريم ورك كار كنم؟
    • توسط reza_yki
      سلام من نیاز به کسی دارم که بتونه یه صفحه ساز (page builder) برای قالب وردپرس از پایه طراحی کنه
      و کدها رو به صورت فیلم برام توضیح بده ( فیلم آموزشی ) و داخلش امکانات زیر قرار داده بشه:
      افزودن نامحدود لایه یا همون row و کاملا شبیه به کاری که کامپوزر میکنه با قابلیلت درگ کردن لایه ها، ویرایش، حذف و احتمالا امکان کپی و پیست از یه لایه برای استفاده در لایه دیگه. و کار بعدی اینه که یکی دوتا براش شورتکد (element) بزنید مثلا یکی این باشه که بشه ادیتور اضافه کنید بهش (ویرایشگر پیشفرض وردپرس).  یکی دیگشم نمایش یک دسته خاص با تنظیماتی مانند تعداد پست، رنگ عنوان و دسته مورد نظر برای فهمیدن نحوه ارتباط و غیره تا با توجه به اون من شورتکد های خودمو طراحی کنم توضیح کامل در انتها داده میشه. می خوام کاربر انتخاب کنه که از ویرایشگر خود وردپرس استفاده کنه یا از صفحه ساز ما همچنین امکان استفاده در page و post رو هم داشته باشه. امکان دیگه این که کاربر بتونه برای خودش تو این لایه ها یه widget area اضافه کنه تا از ابزارک ها پیشفرض یا غیره هم استفاده کنه.  
      منظور از شورت کد اینه که طرف بعد از ایجاد row المنت هایی که من طراحی کردم رو داخلش قرار بده می خوام این قسمت طوری آموزش داده بشه که بتونم المنت های خودمو براش توسعه بدم
      توضیح: دلیل این کار اینه که من می تونم با ویژال کامپوزر المنت های اختصاصی ام رو بهش اضافه کنم ولی سنگینی این افزونه باعث شده که منصرف بشم از این کار.
       
      نکته: نمی خوام به صورت پلاگین باشه باید مستقیم به قالب وصل بشه و همچنین باید کاملا سبک باشه
      نکته 2: طوری طراحی بشه که اگر کاربر بعدا قالب رو حذف کرد محتوا از بین نره یا مخدوش نشون داده نشه
      نکته 3: ظاهر کار مهم نیست خودم اون قسمت رو درست میکنم

      اگه پیشنهادی دارید خوشحال میشم بشنوم

      ممنون
    • توسط yaali
      سلام
      کد زیر مال افزونه visual composer هست. میخوام بذارم داخل قالب برگه ی اصلی.
      وقتی میذارمش، عمل نمیکنه و خود کد رو نشون میده.
      چیکارش کنیم؟
      [vc_row][vc_column width="5/6"][rev_slider_vc alias="slider1"][/vc_column][vc_column width="1/6"][vc_single_image image="7198" img_size="320x390 (Width x Height)" add_caption="yes" alignment="center" style="vc_box_rounded"][/vc_column][/vc_row]  تصویر ضمیمه رو ببینید
      ممنون از همه