How Can I Find The Contents Of The First H3 Tag?
I am looking for a regex to find the contents of the first
tag. What can I use there?
Solution 1:
You should use php's DOM parser instead of regular expressions. You're looking for something like this (untested code warning):
$domd = new DOMDocument();
libxml_use_internal_errors(true);
$domd->loadHTML($html_content);
libxml_use_internal_errors(false);
$domx = new DOMXPath($domd);
$items = $domx->query("//h3[position() = 1]");
echo$items->item(0)->textContent;
Solution 2:
Well, a simple solution would be the following:
preg_match( '#<h3[^>]*>(.*?)</h3>#i', $text, $match );
echo$match[1];
For everything more complex, you should consider using a HTML document parser though.
Solution 3:
The DOM approach:
<?php
$html = '<!DOCTYPE HTMLPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><title></title></head><body><h1>Lorem ipsum<h1><h2>Dolor sit amet<h2><h3>Duis quis velit est<h3><p>Cras non tempor est.</p><p>Maecenas nec libero leo.</p><h3>Nulla eu ligula est</h3><p>Suspendisse potenti.</p></body></html>
';
$doc = new DOMDocument;
$doc->loadHTML($html);
$titles = $doc->getElementsByTagName('h3');
if( !is_null($titles->item(0)) ){
echo $titles->item(0)->nodeValue;
}
?>
Solution 4:
Here's an explanation why parsing HTML with regular expressions is evil. Anyway, this is a way to do it...
$doc = new DOMDocument();
$doc->loadHTML($text);
$headings = $doc->getElementsByTagName('h3');
$heading = $headings->item(0);
$heading_value = (isset($heading->nodeValue)) ? $heading->nodeValue : 'Header not found';
Solution 5:
First of all: regular expressions aren't a proper tool for parsing HTML code. However in this case, they should be good enough, cause H3
tags cannot be nested.
preg_match_all('/<h3[^>]*>(.*?)<\/h3>/si', $source, $matches);
$matches
variable should contains content from H3
tagas.
Post a Comment for "How Can I Find The Contents Of The First H3 Tag?"