DiDOM is a PHP library that allows you to parse HTML and XML documents and select elements using CSS selectors. It's a fast and convenient way to scrape data from web pages or manipulate HTML/XML content. DiDOM uses the Document
and Element
classes for most of its operations.
Here's how you can select elements using CSS selectors in DiDOM:
First, you need to make sure you have DiDOM installed. If you haven't already installed it, you can do so using Composer:
composer require imangazaliev/didom
Once you have DiDOM installed, you can use the following PHP code to select elements:
<?php
require_once 'vendor/autoload.php';
use DiDom\Document;
$html = <<<HTML
<!DOCTYPE html>
<html>
<head>
<title>Sample Page</title>
</head>
<body>
<div id="content">
<h1>Welcome to My Website</h1>
<p class="description">This is a sample paragraph.</p>
<ul class="items">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
</body>
</html>
HTML;
// Create a new Document instance and load HTML
$document = new Document($html);
// Select elements using CSS selectors
// Select the element with the id 'content'
$content = $document->find('#content')[0];
// Select all paragraph elements with the class 'description'
$descriptions = $document->find('.description');
// Select all list items within unordered lists with the class 'items'
$listItems = $document->find('.items li');
// Output the text of the selected elements
echo $content->text(); // Outputs the text within the 'content' div
foreach ($descriptions as $description) {
echo $description->text(); // Outputs the text of each description paragraph
}
foreach ($listItems as $item) {
echo $item->text(); // Outputs the text of each list item
}
In the above example, the find
method is used to select elements based on CSS selectors. The find
method returns an array of Element
objects that match the selector. You can then iterate over these elements or access them directly if you're expecting only one result.
Some important things to note when using DiDOM:
- The
find
method always returns an array of elements, even if only one element matches the selector. If you expect only one element, you should access the first element in the returned array (e.g.,$document->find('#content')[0]
). - If no elements are found,
find
will return an empty array. - You can use most CSS selectors that you would normally use in a browser, such as tag names, class names, IDs, attribute selectors, etc.
Remember to handle cases where elements might not exist to avoid undefined index errors. For instance, check if the array is not empty before trying to access an element:
$elements = $document->find('.non-existent-class');
if (!empty($elements)) {
// Element exists, process it
echo $elements[0]->text();
} else {
// Element does not exist, handle accordingly
echo "Element not found.";
}
DiDOM is a powerful tool for PHP developers who need to perform web scraping or manipulate HTML/XML structures, and it makes selecting elements with CSS selectors very straightforward.