PHP parse HTML tags [duplicate]

2020-02-13 08:10发布

Possible Duplicate:
How to parse and process HTML with PHP?

I'm pretty new to PHP. I have the text of a body tag of some page in a string variable. I'd like to know if it contains some tag ... where the tag name tag1 is given, and if so, take only that tag from the string. How can I do that simply in PHP?

Thanks!!

3条回答
仙女界的扛把子
2楼-- · 2020-02-13 08:14

You would be looking at something like this:

<?php
$content = "";
$doc = new DOMDocument();
$doc->load("example.html");
$items = $doc->getElementsByTagName('tag1');
if(count($items) > 0) //Only if tag1 items are found 
{
    foreach ($items as $tag1)
    {
         // Do something with $tag1->nodeValue and save your modifications
         $content .= $tag1->nodeValue;
    }
}
else
{
     $content = $doc->saveHTML();
}
echo $content;
?>

DomDocument represents an entire HTML or XML document; serves as the root of the document tree. So you will have a valid markup, and by finding elements By Tag Name you won't find comments.

查看更多
The star\"
3楼-- · 2020-02-13 08:15

Another possibility is regex.

$matches = null;
$returnValue = preg_match_all('#<li.*?>(.*?)</li>#', 'abc', $matches);

$matches[0][x] contains the whole matches such as <li class="small">list entry</li>, $matches[1][x] containt the inner HTML only such as list entry.

查看更多
三岁会撩人
4楼-- · 2020-02-13 08:36

Fast way:

Look for the index position of tag1 then look for the index position of /tag1. Then cut the string between those two indexes. Look up strpos and substr on php.net Also this might not work if your string is too long.

$pos1 = strpos($bigString, '<tag1>');
$pos2 = strpos($bigString, '</tag1>');
$resultingString = substr($bigString, -$pos1, $pos2);

You might have to add and/or substract some units from $pos1 and $pos2 to get the $resultingString right. (if you don't have comments with tag1 inside of them sigh)

The right way:

Look up html parsers

查看更多
登录 后发表回答