PHP Professional এবং Zend Certified PHP Engineer (ZCPE ) Course এ সীমিত সংখ্যক আসন বাকি আছে। আগ্রহীদেরকে অতিসত্বর মাসুদ আলম স্যার এর সাথে যোগাযোগ করার জন্য অনুরোধ করা যাচ্ছে। স্যার এর মোবাইল নম্বর : ০১৭২২ ৮১ ৭৫ ৯১

DOM with PHP Part-2

Document Object Model

Document Object Model

DOM with PHP এর দ্বিতীয় পর্বে আপনাকে স্বাগতম , এই পর্বে আমরা দেখবো কিভাবে 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>

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 যোগ হয়েছে।

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 করুন।
উপরের স্টেপ গুলো অনুযায়ী নিচের উদাহরণটি লক্ষ্য করুন:

<?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>

এই ক্যাটাগরির অন্যান্য পোস্ট:

Masud Alam
আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ৮ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। বিশেষ ভাবে বাংলাদেশের ১০০ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ৫২ জন ই আমার হাতে জেন্ড সার্টিফাইড হয়েছে। বর্তমানে TechBeeo Software Company তে সিইও হিসাবে আছি । পাশাপাশি w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -7 Engineering কোর্স করাই। আর w3programmers.com সাইট টি আমার।
2 comments on “DOM with PHP Part-2

Leave a Reply

Your email address will not be published. Required fields are marked *