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

DOM with PHP Part-1

PHP DOM

Document Object Model

DOM কি?

Document Object Model (DOM) হচ্ছে Cross Platform এবং Language Independent একটি Application Programming Interface যা HTML, XHTML অথবা XML Document কে একটি Tree আকারে তৈরী করে। একটি Document এর প্রতিটি Node কে ভিন্ন ভিন্ন Object হিসেবে উপস্থাপন করে। তাছাড়া এটি Document এর Structure তৈরির সুবিধা দেয়; এবং অন্যান্য প্রোগ্রাম যাতে সেই Document এর Structure, style ও content পরিবর্তন এবং সংরক্ষণ করতে পারে সেই সুবিধা দেয়। মূলত, এটা ওয়েব পেজকে বিভিন্ন ধরণের Scripting ও Programming Language গুলোর সাথে যুক্ত করে। Document Object Model (DOM) কে PHP ও JavaScript এর মতো যেকোনো Scripting ল্যাঙ্গুয়েজ দিয়ে পরিবর্তন করা যায়।

PHP তে কিভাবে একটা HTML Code কে DOM Document এ পরিবর্তন করবেন?

PHP তে একটা HTML Code কে DOM Document এ পরিবর্তন করতে হলে আপনাকে DOMDocument class থেকে new DOMDocument() লিখে একটা Object তৈরী করতে হবে। তারপর DOMDocument ক্লাসের loadHTML Method দিয়ে HTML Code কে Object এ রূপান্তর করতে হবে। নিচের উদাহরণটি দেখুন

<?php
$students_info=<<<"students"

<!DOCTYPE html>
<html>
<head>
	<title>PHP DOMDocument</title>
</head>
<body>
	<h2>PHP DOMDocument Example</h2>
	<p>Welcome to PHP DOMDocument</p>

</body>
</html>
students;
$doc = new DOMDocument();
$doc->loadHTML($students_info);
echo "<pre>";
print_r($doc);
echo "</pre>";

Output

DOMDocument Object
(
    [doctype] => (object value omitted)
    [implementation] => (object value omitted)
    [documentElement] => (object value omitted)
    [actualEncoding] => 
    [encoding] => 
    [xmlEncoding] => 
    [standalone] => 1
    [xmlStandalone] => 1
    [version] => 
    [xmlVersion] => 
    [strictErrorChecking] => 1
    [documentURI] => 
    [config] => 
    [formatOutput] => 
    [validateOnParse] => 
    [resolveExternals] => 
    [preserveWhiteSpace] => 1
    [recover] => 
    [substituteEntities] => 
    [nodeName] => #document
    [nodeValue] => 
    [nodeType] => 13
    [parentNode] => 
    [childNodes] => (object value omitted)
    [firstChild] => (object value omitted)
    [lastChild] => (object value omitted)
    [previousSibling] => 
    [nextSibling] => 
    [attributes] => 
    [ownerDocument] => 
    [namespaceURI] => 
    [prefix] => 
    [localName] => 
    [baseURI] => 
    [textContent] => PHP DOMDocument
	PHP DOMDocument Example
	Welcome to PHP DOMDocument
)

লাইন নম্বর ৩৭ এ লক্ষ্য করুন, এখানে অন্যান্য DOM Document Property এর পাশাপাশি textContent Property তে আপনার সমগ্র html code এর string output টা দেখাচ্ছে। আর তাই এখন আপনি চাইলে শুধু text Output গুলো নিচের মতো করে print করতে পারবেন।

<?php
$students_info=<<<"students"

<!DOCTYPE html>
<html>
<head>
	<title>PHP DOMDocument</title>
</head>
<body>
	<h2>PHP DOMDocument Example</h2>
	<p>Welcome to PHP DOMDocument</p>

</body>
</html>
students;
$doc = new DOMDocument();
$doc->loadHTML($students_info);
echo $doc->textContent;

Output

PHP DOMDocument 
PHP DOMDocument Example 
Welcome to PHP DOMDocument

PHP তে কিভাবে একটা XML Code কে DOM Document এ পরিবর্তন করবেন?

PHP তে একটা XML Code কে DOM Document এ পরিবর্তন করতে হলে আপনাকে DOMDocument class থেকে new DOMDocument() লিখে একটা Object তৈরী করতে হবে। তারপর DOMDocument ক্লাসের loadXML Method দিয়ে XML Code কে Object এ রূপান্তর করতে হবে। নিচের উদাহরণটি দেখুন:

<?php
$xml = <<<XML
<?xml version="1.0"?>
<college>  
  <student>  
      <firstname>Nahida</firstname>  
      <lastname>Sultana</lastname>  
      <contact>01722334412</contact>  
      <email>nahida@abc.com</email>  
      <address type="Present Address">  
           <district>Noakhali</district>  
           <thana>Begum Gonj</thana>  
           <post>3831</post>  
      </address>  
      <fathername>Karim Bapary</fathername>
  </student>  
</college>
XML;
 
$sxe = new DOMDocument($xml);
$sxe->loadXML($xml);
echo "<pre>";
print_r($sxe);
echo "</pre>";
?>

Output

DOMDocument Object
(
    [doctype] => 
    [implementation] => (object value omitted)
    [documentElement] => (object value omitted)
    [actualEncoding] => 
    [encoding] => 
    [xmlEncoding] => 
    [standalone] => 1
    [xmlStandalone] => 1
    [version] => 1.0
    [xmlVersion] => 1.0
    [strictErrorChecking] => 1
    [documentURI] => file:/C:/xampp/htdocs/fci1/
    [config] => 
    [formatOutput] => 
    [validateOnParse] => 
    [resolveExternals] => 
    [preserveWhiteSpace] => 1
    [recover] => 
    [substituteEntities] => 
    [nodeName] => #document
    [nodeValue] => 
    [nodeType] => 9
    [parentNode] => 
    [childNodes] => (object value omitted)
    [firstChild] => (object value omitted)
    [lastChild] => (object value omitted)
    [previousSibling] => 
    [nextSibling] => 
    [attributes] => 
    [ownerDocument] => 
    [namespaceURI] => 
    [prefix] => 
    [localName] => 
    [baseURI] => file:/C:/xampp/htdocs/fci1/
    [textContent] =>   
    
      Nahida  
      Sultana  
      01722334412  
      nahida@abc.com  
        
           Noakhali  
           Begum Gonj  
           3831  
        
      Karim Bapary
    

)

PHP তে কিভাবে একটা HTML অথবা XML File কে DOM Document এ পরিবর্তন করবেন?

PHP তে একটা HTML File অথবা XML কে DOM Document এ পরিবর্তন করতে হলে আপনাকে DOMDocument class থেকে new DOMDocument() লিখে একটা Object তৈরী করতে হবে। তারপর DOMDocument ক্লাসের load Method দিয়ে HTML অথবা XML File কে Object এ রূপান্তর করতে হবে। চলুন প্রথমে দুটি file যথাক্রমে test.html এবং test.xml বানাই।

test.html

<!DOCTYPE html>
<html>
<head>
	<title>PHP DOMDocument</title>
</head>
<body>
	<h2>PHP DOMDocument Example</h2>
	<p>Welcome to PHP DOMDocument</p>
</body>
</html>

test.xml

<?xml version="1.0"?>
<college>  
  <student>  
      <firstname>Nahida</firstname>  
      <lastname>Sultana</lastname>  
      <contact>01722334412</contact>  
      <email>nahida@abc.com</email>  
      <address type="Present Address">  
           <district>Noakhali</district>  
           <thana>Begum Gonj</thana>  
           <post>3831</post>  
      </address>  
      <fathername>Karim Bapary</fathername>
  </student>  
</college>

এখন আমরা এই দুটি file কে DOM Document এ রূপান্তর করব। নিচের উদাহরণটি দেখুন:

<?php
$doc = new DOMDocument();
$doc->loadHTML("test.html");
echo "<pre>";
    print_r($doc);
echo "</pre>";
$doc->loadXML("test.xml");
echo "<pre>";
    print_r($doc);
echo "</pre>";

Output
DOMDocument Object
(
[doctype] => (object value omitted)
[implementation] => (object value omitted)
[documentElement] => (object value omitted)
[actualEncoding] =>
[encoding] =>
[xmlEncoding] =>
[standalone] => 1
[xmlStandalone] => 1
[version] => 1.0
[xmlVersion] => 1.0
[strictErrorChecking] => 1
[documentURI] => file:/C:/xampp/htdocs/fci1/test.html
[config] =>
[formatOutput] =>
[validateOnParse] =>
[resolveExternals] =>
[preserveWhiteSpace] => 1
[recover] =>
[substituteEntities] =>
[nodeName] => #document
[nodeValue] =>
[nodeType] => 9
[parentNode] =>
[childNodes] => (object value omitted)
[firstChild] => (object value omitted)
[lastChild] => (object value omitted)
[previousSibling] =>
[nextSibling] =>
[attributes] =>
[ownerDocument] =>
[namespaceURI] =>
[prefix] =>
[localName] =>
[baseURI] => file:/C:/xampp/htdocs/fci1/test.html
[textContent] =>

PHP DOMDocument

PHP DOMDocument Example
Welcome to PHP DOMDocument

)
DOMDocument Object
(
[doctype] =>
[implementation] => (object value omitted)
[documentElement] => (object value omitted)
[actualEncoding] =>
[encoding] =>
[xmlEncoding] =>
[standalone] => 1
[xmlStandalone] => 1
[version] => 1.0
[xmlVersion] => 1.0
[strictErrorChecking] => 1
[documentURI] => file:/C:/xampp/htdocs/fci1/test.xml
[config] =>
[formatOutput] =>
[validateOnParse] =>
[resolveExternals] =>
[preserveWhiteSpace] => 1
[recover] =>
[substituteEntities] =>
[nodeName] => #document
[nodeValue] =>
[nodeType] => 9
[parentNode] =>
[childNodes] => (object value omitted)
[firstChild] => (object value omitted)
[lastChild] => (object value omitted)
[previousSibling] =>
[nextSibling] =>
[attributes] =>
[ownerDocument] =>
[namespaceURI] =>
[prefix] =>
[localName] =>
[baseURI] => file:/C:/xampp/htdocs/fci1/test.xml
[textContent] =>

Nahida
Sultana
01722334412
nahida@abc.com

Noakhali
Begum Gonj
3831

Karim Bapary
)
[/text]

PHP তে কোনো HTML অথবা XML File এর Value গুলোকে Tag name দিয়ে print করা যাবে?

PHP তে কোনো HTML অথবা XML File এর Value গুলোকে Tag name দিয়ে print করতে হলে আপনাকে getElementsByTagName() মেথডটি ব্যবহার করতে হবে। নিচের উদাহরণটি দেখুন:

<?php
$doc = new DOMDocument();
$doc->load("test.html");
$content=$doc->getElementsByTagName("p");
foreach($content as $val){
	echo $val->nodeValue,"<br>";
}

Output

PHP Paragraph-1 
PHP Paragraph-2
PHP Paragraph-3

এবার একই কাজটি আমরা একটা HTML String এর উপর apply করব। নিচের উদাহরণ দেখুন:

<?php
$html=<<<"html"
<!DOCTYPE html>
<html>
<head>
	<title>PHP DOMDocument</title>
</head>
<body>
	<h2>PHP DOMDocument Example</h2>
	<p>PHP Paragraph-1 </p>
	<p>PHP Paragraph-2</p>
	<p>PHP Paragraph-3</p>
</body>
</html>
html;
$doc = new DOMDocument();
$doc->loadHTML($html);
$content=$doc->getElementsByTagName("p");
foreach($content as $val){
	echo $val->nodeValue,"<br>";
}

Output

PHP Paragraph-1 
PHP Paragraph-2
PHP Paragraph-3

একই ভাবে আপনি xml File থেকেও getElementsByTagName() মেথডটি ব্যবহার করে data retrieve করতে পারবেন । চলুন tag name দিয়ে xml file থেকে data retrieve করা বুঝার জন্য প্রথমে books.xml নামে একটা file তৈরী করি।

books.xml

<?xml version="1.0" encoding="utf-8"?>
<books>
 <book>Patterns of Enterprise Application Architecture</book>
 <book>Design Patterns: Elements of Reusable Software Design</book>
 <book>Clean Code</book>
</books>

এবার নিচের PHP Code টি লিখে রান করুন :

<?php
$dom = new DOMDocument;
$dom->load("books.xml");
$books = $dom->getElementsByTagName('book');
foreach ($books as $book) {
    echo $book->nodeValue,"<br>";
}
?>

Output

Patterns of Enterprise Application Architecture
Design Patterns: Elements of Reusable Software Design
Clean Code

লক্ষ্য করুন, আমরা book tag এর মধ্যে অবস্থিত সব গুলো element value পেয়েগেছি।

এবার একই কাজটি আমরা একটা xml String এর উপর apply করব। নিচের উদাহরণ দেখুন:

<?php
$xml = <<< XML
<?xml version="1.0" encoding="utf-8"?>
<books>
 <book>Patterns of Enterprise Application Architecture</book>
 <book>Design Patterns: Elements of Reusable Software Design</book>
 <book>Clean Code</book>
</books>
XML;

$dom = new DOMDocument;
$dom->loadXML($xml);
$books = $dom->getElementsByTagName('book');
foreach ($books as $book) {
    echo $book->nodeValue,"<br>";
}
?>

Output

Patterns of Enterprise Application Architecture
Design Patterns: Elements of Reusable Software Design
Clean Code

এখানেও লক্ষ্য করুন, আমরা book tag এর মধ্যে অবস্থিত সব গুলো element value পেয়েগেছি।

PHP তে কোনো HTML অথবা XML এর Value গুলোকে id ধরে print করা যাবে?

PHP তে কোনো HTML অথবা XML এর Value গুলোকে id ধরে print করতে হলে আপনাকে getElementById() মেথডটি ব্যবহার করতে হবে। চলুন প্রথমে html এর উদাহরণটি দেখা যাক :

<?php
$html=<<<"html"
<!DOCTYPE html>
<html>
<body>
  <h2>PHP DOMDocument Example</h2>
  <p id="y">PHP Paragraph-1 </p>
  <p id="x">PHP Paragraph-2</p>
</body>
</html>
html;
$dom = new DOMDocument();
$dom->validateOnParse = true; //<!-- this first
$dom->loadHTML($html);        //'cause 'load' == 'parse

$dom->preserveWhiteSpace = false;
echo $dom->getElementById("y")->nodeValue,"<br>";
echo $dom->getElementById("x")->nodeValue;

Output

PHP Paragraph-1 
PHP Paragraph-2

এবার আমরা চলুন xml string এর উদাহরণটি দেখব :

<?php
$xml=<<<"xml"
<!DOCTYPE books [
  <!ATTLIST book    id           ID     #IMPLIED>
]>
<books>
  <book id="php-basics">
    <title>PHP Basics</title>
    <author>Jim Smith</author>
  </book>
  <book id="php-advanced">
    <title>PHP Advanced Programming Part-1</title>
    <author>Masud Alam</author>
  </book>
</books>
xml;
$doc = new DOMDocument();
$doc->loadXML($xml);
echo $doc->getElementById("php-advanced")->nodeValue;

Output

PHP Advanced Programming Part-1 
Masud Alam

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

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 সাইট টি আমার।

Leave a Reply

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