PHP DOM Part-2

PHP DOM Document
Document Object Model

PHP DOM এর দ্বিতীয় পর্বে আপনাকে স্বাগতম , এই পর্বে আমরা দেখবো কিভাবে PHP তে DOM Document ব্যবহার করে নতুন XML এবং HTML তৈরী করবেন? PHP তে DOM Document ব্যবহার করে কিভাবে একটি XML অথবা HTML element এ নতুন attribute যোগ করবেন? এবং PHP তে DOM Document ব্যবহার করে HTML অথবা XML এ কোনো নির্দিষ্ট element এর পূর্বে নতুন Element কিভাবে যুক্ত করবেন?

PHP তে DOM Document ব্যবহার করে কিভাবে নতুন XML তৈরী করবেন?

PHP DOM Document ব্যবহার করে নতুন XML তৈরী করতে হলে প্রথমে আপনাকে DOMDocument Class থেকে একটা Object তৈরী করতে হবে , তারপর createElement Method দিয়ে নতুন Element তৈরী করতে হবে, এবং appendChild Method দিয়ে child element হিসেবে যুক্ত করে দিতে হবে। সবশেষে saveXML() Method দিয়ে XML String অথবা save Method দিয়ে XML File হিসেবে save করতে হবে। চলুন নিচের উদাহরণটি দেখুন:

<?php
    $doc = new DOMDocument('1.0', 'utf-8');

    $college=$doc->createElement("college");
    $doc->appendChild($college);
    
    $student = $doc->createElement("student");
    $college->appendChild($student);

    echo $doc->save("students.xml");
?>

ব্যাখ্যা: ৪ নম্বর লাইনে আমরা createElement Method দিয়ে college নামে একটা element তৈরী করি , এবং ৫ নম্বর লাইনে appendChild Method দিয়ে এটিকে XML Element হিসেবে append করি। আবার ৭ নম্বর লাইনে একইভাবে student নামে একটা element তৈরী করি, আর যেহেতু student element টি college element এর অধীনে হবে তাই $college অবজেক্ট হ্যান্ডলার দিয়ে student element কে college element এর child হিসেবে append করি।

এখন students.xml নামে একটা file তৈরী হবে যা নিচের মতো করে xml তৈরী করবে।

<?xml version="1.0" encoding="utf-8"?>
<college>
	<student/>
</college>

এবার চলুন আমরা একটা nested XML Element যুক্ত XML File তৈরী করি :

<?php
    $doc = new DOMDocument('1.0', 'utf-8');

    $college=$doc->createElement("college");
    $doc->appendChild($college);
    
    $student = $doc->createElement("student");
    $college->appendChild($student);

    $name = $doc->createElement("name","Mamnun Bin Masud");
    $student->appendChild($name);

    $mobile = $doc->createElement("mobile","01788229900");
    $student->appendChild($mobile);

    $address = $doc->createElement("address");
    $student->appendChild($address);

    $district=$doc->createElement("district","Noakhali");
    $address->appendChild($district);

    $thana=$doc->createElement("thana","Begum Gonj");
    $address->appendChild($thana);

    $postcode=$doc->createElement("postcode","3831");
    $address->appendChild($postcode);

    $student = $doc->createElement("student");
    $college->appendChild($student);

    $name = $doc->createElement("name","Muhib Bin Masud");
    $student->appendChild($name);

    $mobile = $doc->createElement("mobile","01655229900");
    $student->appendChild($mobile);

    $address = $doc->createElement("address");
    $student->appendChild($address);

    $district=$doc->createElement("district","Feni");
    $address->appendChild($district);

    $thana=$doc->createElement("thana","Senbag");
    $address->appendChild($thana);

    $postcode=$doc->createElement("postcode","3631");
    $address->appendChild($postcode);

    echo $doc->save("students.xml");
?>

Output

এখন students.xml নামে একটা file তৈরী হবে যা নিচের মতো করে xml তৈরী করবে।

<?xml version="1.0" encoding="utf-8"?>
<college>
	<student>
		<name>Mamnun Bin Masud</name>
		<mobile>01788229900</mobile>
		<address>
			<district>Noakhali</district>
			<thana>Begum Gonj</thana>
			<postcode>3831</postcode>
		</address>
	</student>
	<student>
		<name>Muhib Bin Masud</name>
		<mobile>01655229900</mobile>
		<address>
			<district>Feni</district>
			<thana>Senbag</thana>
			<postcode>3631</postcode>
		</address>
	</student>
</college>

উল্লেখ্য, আপনি যদি xml file হিসেবে save করতে না চান , শুধু XML String generate করতে চান, তাহলে save Method এর পরিবর্তে saveXML Method টি ব্যবহার করতে হবে।

PHP DOM Document ব্যবহার করে কিভাবে একটি XML element এ নতুন attribute যোগ করবেন?

PHP তে DOM Document ব্যবহার করে যেকোনো XML element এ নতুন attribute যোগ করতে হলে আপনাকে createAttribute() Method টি ব্যবহার করতে হবে। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক :

<?php
    $doc = new DOMDocument('1.0', 'utf-8');
 
    $college=$doc->createElement("college");
    $attribute = $doc->createAttribute('title');
    $attribute->value = "Student Information"; 
    $college->appendChild($attribute);
    $doc->appendChild($college);


    $student = $doc->createElement("student");
    $college->appendChild($student);

 
    $name = $doc->createElement("name","Mamnun Bin Masud");
    $student->appendChild($name);
 
    $mobile = $doc->createElement("mobile","01788229900");
    $student->appendChild($mobile);
 
    $address = $doc->createElement("address","Dhaka,Bangladesh");
    $student->appendChild($address);
 
    echo $doc->save("students.xml");
?>

Output

<?xml version="1.0" encoding="utf-8"?>
<college title="Student Information">
	<student><name>Mamnun Bin Masud</name>
	<mobile>01788229900</mobile>
	<address>Dhaka,Bangladesh</address>
</student>
</college>

লক্ষ্য করুন, এখানে xml college tag এ title নামে একটা attribute যোগ হয়েছে।

PHP DOM Document ব্যবহার করে কিভাবে নতুন HTML তৈরী করবেন?

PHP তে DOM Document ব্যবহার করে নতুন HTML তৈরী করতে হলে প্রথমে আপনাকে DOMDocument Class থেকে একটা Object তৈরী করতে হবে , তারপর createElement Method দিয়ে নতুন Element তৈরী করতে হবে, এবং appendChild Method দিয়ে child tag গুলোকে যুক্ত করে দিতে হবে। সবশেষে saveMethod() Method দিয়ে HTML String অথবা saveHTMLFile Method দিয়ে html File হিসেবে save করতে হবে। চলুন নিচের উদাহরণটি দেখুন:

<?php
    $doc = new DOMDocument('5','utf-8');

    $root = $doc->createElement('html');
    $doc->appendChild($root);

    $head = $doc->createElement('head');
    $root->appendChild($head);

    $title = $doc->createElement('title',"Create HTML using HTML DOMDocument");
    $head->appendChild($title);

   echo $doc->saveHTMLFile("students.html");
  
?>

ব্যাখ্যা: ৪ নম্বর লাইনে আমরা createElement Method দিয়ে html root element তৈরী করি , এবং ৫ নম্বর লাইনে appendChild Method দিয়ে এটিকে XML Element হিসেবে append করি। আবার ৭ নম্বর লাইনে একইভাবে head element তৈরী করি, আর যেহেতু head element টি html element এর অধীনে হবে তাই $html অবজেক্ট হ্যান্ডলার দিয়ে head element কে html element এর child হিসেবে append করি।

এখন students.html নামে একটা file তৈরী হবে যা নিচের মতো করে html code তৈরী করবে।

<html>
<head>
	<title>Create HTML using HTML DOMDocument</title>
</head>
</html>

এবার চলুন আমরা html table সহ একটা html File তৈরী করি :

<?php
    $doc = new DOMDocument('5','utf-8');

    $root = $doc->createElement('html');
    $doc->appendChild($root);

    $head = $doc->createElement('head');
    $root->appendChild($head);

    $title = $doc->createElement('title',"Create HTML using HTML DOMDocument");
    $head->appendChild($title);

    $body=$doc->createElement('body');
    $root->appendChild($body);

    $table=$doc->createElement("table");
    $body->appendChild($table);
    
    $tr1 = $doc->createElement("tr");
    $table->appendChild($tr1);

    $tr2 = $doc->createElement("tr");
    $table->appendChild($tr2);

    $tr3 = $doc->createElement("tr");
    $table->appendChild($tr3);

    $th1 = $doc->createElement("th","Name");
    $td1 = $doc->createElement("td","Mamnun Bin Masud");
    $tr1->appendChild($th1);
    $tr1->appendChild($td1);

    $th2 = $doc->createElement("th","Mobile");
    $td2 = $doc->createElement("td","01788229911");
    $tr2->appendChild($th2);
    $tr2->appendChild($td2);

    $th3 = $doc->createElement("th","Address");
    $td3 = $doc->createElement("td","Dhaka,Bangladesh");
    $tr3->appendChild($th3);
    $tr3->appendChild($td3);


    echo $doc->saveHTMLFile("students.html");

?>


Output

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>Create HTML using HTML DOMDocument</title>
</head>
<body>
	<table>
		<tr>
			<th>Name</th>
			<td>Mamnun Bin Masud</td>
		</tr>
		<tr>
			<th>Mobile</th>
			<td>01788229911</td>
		</tr>
		<tr>
			<th>Address</th>
			<td>Dhaka,Bangladesh</td>
		</tr>
	</table>
</body>
</html>

https://blog.w3programmers.com/php-course/

PHP DOM Document ব্যবহার করে কিভাবে একটি HTML element এ নতুন attribute যোগ করবেন?

PHP তে HTML Document ব্যবহার করে যেকোনো HTML element এ নতুন attribute যোগ করতে হলে আপনাকে createAttribute() Method টি ব্যবহার করতে হবে। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক :

<?php
    $doc = new DOMDocument('5','utf-8');

    $root = $doc->createElement('html');
    $doc->appendChild($root);

    $head = $doc->createElement('head');
    $root->appendChild($head);

    $title = $doc->createElement('title',"Create HTML using HTML DOMDocument");
    $head->appendChild($title);

    $body=$doc->createElement('body');
    $root->appendChild($body);

    $table=$doc->createElement("table");
    $body->appendChild($table);
    $attribute = $doc->createAttribute('border');
    $attribute->value = 1; 
    $table->appendChild($attribute);
    
    $tr1 = $doc->createElement("tr");
    $table->appendChild($tr1);

    $tr2 = $doc->createElement("tr");
    $table->appendChild($tr2);

    $tr3 = $doc->createElement("tr");
    $table->appendChild($tr3);

    $th1 = $doc->createElement("th","Name");
    $td1 = $doc->createElement("td","Mamnun Bin Masud");
    $tr1->appendChild($th1);
    $tr1->appendChild($td1);

    $th2 = $doc->createElement("th","Mobile");
    $td2 = $doc->createElement("td","01788229911");
    $tr2->appendChild($th2);
    $tr2->appendChild($td2);

    $th3 = $doc->createElement("th","Address");
    $td3 = $doc->createElement("td","Dhaka,Bangladesh");
    $tr3->appendChild($th3);
    $tr3->appendChild($td3);


    echo $doc->saveHTMLFile("students.html");

?>

Output

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>Create HTML using HTML DOMDocument</title>
</head>
<body>
	<table border="1">
		<tr>
			<th>Name</th>
			<td>Mamnun Bin Masud</td>
		</tr>
		<tr>
			<th>Mobile</th>
			<td>01788229911</td>
		</tr>
		<tr>
			<th>Address</th>
			<td>Dhaka,Bangladesh</td>
		</tr>
	</table>
</body>
</html>

লক্ষ্য করুন, এখানে html table tag এ border নামে একটা attribute যোগ হয়েছে।

https://blog.w3programmers.com/php-course/

PHP DOM Document ব্যবহার করে HTML অথবা XML এ কোনো নির্দিষ্ট element এর পূর্বে নতুন Element কিভাবে যুক্ত করবেন?

PHP DOM Document ব্যবহার করে HTML অথবা XML এ কোনো নির্দিষ্ট element এর পূর্বে নতুন Element যুক্ত করতে হলে আপনাকে নিচের স্টেপ গুলো শেষ করতে হবে।

    • স্টেপ-১: DOMDocument class থেকে একটা Object তৈরী করুন।
    • স্টেপ-২: যেই html File অথবা String এ নতুন Element যোগ করতে চাচ্ছেন , সেটি loadHTMLFile অথবা loadHtml() Method দিয়ে load করুন।
    • স্টেপ-৩: HTML এর existing যেই Element এর মধ্যে নতুন element তৈরী করতে চাচ্ছেন , সেই Element এর id কে getElementById() Method দিয়ে Select করুন,
    • স্টেপ-৪: এখন আপনার selected Id এর অধীনে একই tag একাধিক বার থাকতে পারে , আর তাই নির্দিষ্ট একটি tag কে সিলেক্ট করার জন্য getElementsByTagName(‘tagName’)->item(tagIndex); ব্যবহার করুন। অর্থাৎ যেই পজিশনে নতুন element সেট করবেন , সেই পজিশন সিলেক্ট করুন।
    • স্টেপ-৫: এবার createElement() Method দিয়ে আপনার নতুন element টি তৈরী করুন।
    • স্টেপ-৬: এবার যেই Element এর আগে নতুন Element টি সেট করতে চান ,insertBefore() Method দিয়ে সেট করুন।
    • স্টেপ-৭: সর্বশেষ saveHTML অথবা saveHTMLFile দিয়ে save করুন।

</uL

উপরের স্টেপ গুলো অনুযায়ী নিচের উদাহরণটি লক্ষ্য করুন:

<?php
$html=<<<"html"
<html>
<head>
</head>
    <body>
      <div id="content">
        <p>This is a Paragraph</p>
      </div>
    </body>
  </html>
html;
$dom = new DOMDocument();
 
$dom->loadHtml($html);
 
//find the "content" div
$content = $dom->getElementById('content');
 
//find the first p tag in "content"
$PElement = $content->getElementsByTagName('p')->item(0);
 
//create a new Heading 
$h2Element = $dom->createElement('h2', 'This is a Heading 2');
 
//insert the new h2 element before the p element
$content->insertBefore($h2Element, $PElement);
 
echo $dom->saveHTML();
?>

Output

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
</head>
<body>
	<div id="content">
		<h2>This is a Heading 2</h2>
		<p>This is a Paragraph</p>
	</div>
</body>
</html>

আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ১৫ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller, Amarbebsha Ltd সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ডেটা সাইন্স, মেশিন লার্নিং, বিগ ডেটা, ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। এছাড়াও বাংলাদেশের ১৮৫ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ১২০ এরও অধিক ছাত্র আমার হাতে জেন্ড সার্টিফাইড ইঞ্জিনিয়ার হয়েছেন। বর্তমানে w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -8.2 Engineering, Laravel Mastering Course with ReactJS, Python Beginning To Advance with Blockchain, Machine Learning and Data Science, Professional WordPress Plugin Development Beginning to Advance কোর্স করাই। আর অবসর সময়ে w3programmers.com এ ওয়েব টেকনোলজি নিয়ে লেখালেখি করি।

2 thoughts on “PHP DOM Part-2

Leave a Reply