Перебирать <p>теги внутри строки HTML из базы данных - PullRequest
0 голосов
/ 25 октября 2018

Я хочу перебрать теги

внутри строки 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 голосов
/ 25 октября 2018
  • Вам нужно использовать Domdocument .
  • Я использовал DOMNodeList атрибут длины для циклического перебора <p> тегов.

КОД:

<?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/>";
}
0 голосов
/ 25 октября 2018

Вместо этого следует использовать 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)
0 голосов
/ 25 октября 2018
$x = "<p>1</p><p>2</p>";

$values = str_replace(array('<p>', '</p>'), ' ', $x);
$values = explode(' ', $values);

foreach ($values as $val){
    echo($val);
}
0 голосов
/ 25 октября 2018

Почему вы используете простой 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

...