从数据库的HTML字符串中循环遍历<p>标记

时间:2018-10-25 13:42:18

标签: php html string loops parsing

我想遍历数据库中HTML字符串内的

标签。

示例:

$htmlString = "<p>1</p><p>2</p><p>3</p>";

我想遍历$htmlString变量并按以下方式获取1,2,3:

1
2
3

我尝试了simplexml_load_string()函数:

$x = "<p>1</p><p>2</p>";
$xml = simplexml_load_string($x);
foreach ($xml->p as $p) {
    {
        echo $p;
    }
}

但是它给出了错误:

Warning: simplexml_load_string(): Entity: line 1: parser error : Extra content at the end of the document

Warning: simplexml_load_string(): <p>1</p><p>2</p>

Warning: simplexml_load_string(): ^ 

Notice: Trying to get property 'p' of non-object

Warning: Invalid argument supplied for foreach()

4 个答案:

答案 0 :(得分:6)

您应该改用DOMDocument,它将帮助您更轻松地解析HTML,这是示例代码:

<?php

$string = "<p>1</p><p>2</p>";
$domDocument = new DOMDocument();
$domDocument->loadHTML($string);
$paragraphElements = $domDocument->getElementsByTagName('p');
foreach ($paragraphElements as $p) {

        var_dump($p->nodeValue);

}

输出:

string '1' (length=1)
string '2' (length=1)

答案 1 :(得分:1)

代码:

<?php


$dom_document = new DOMDocument();

$dom_document->loadHTML("<p>1</p><p>2</p><p>3</p>");

$p_tags = $dom_document->getELementsByTagName("p");

for($i=0;$i<$p_tags->length;++$i){
    echo $p_tags->item($i)->nodeValue,"<br/>";
}

答案 2 :(得分:-1)

为什么要使用简单的XML?有HTML DOM Parser

<?php
$x = "<p>1</p><p>2</p>";
$html = str_get_html($x);
$html->find('p');
echo $html; // Outputs 1 and 2
?>

文档:https://github.com/sunra/php-simple-html-dom-parser

答案 3 :(得分:-1)

major = open("major.txt", 'rb')
minor = open("minor.txt", 'rb')
major_list = []
minor_list = []
for m in major:
    major_list.append(m)

for n in minor:
    minor_list.append(n)

final = []
for i in minor_list:
    for j in major_list
    if minor_list[i] == major_list[j] and minor_list[i+1] <= major_list[j+1] and minor_list[i+2] >= major_list[j+2]:
        final.append(i)


with open('output.txt', 'w') as f:
    for item in final:
        f.write("%s\n" % item)