0

いくつかのhtmlを保持する変数があります。HTML には、複数の p タグが並んでいます。これらの p タグからテキストを取得し、それらを 1 つの段落にフォーマットして、この新しい段落を新しい変数に設定したいと思います。それは理にかなっていますか?

<h2></h2>
<p>date</p>
<ul></ul>
<iframe></iframe>
<p>apple</p>
<p>banana</p>
<p>grape</p>
<ul></ul>

になります:

<p>apple banana grape</p>

注: HTML の要素は多少異なる場合があります。たとえば、iframeはありません。どこかの画像など

4

2 に答える 2

2

Xpathを使用してそれを行うことができます

$html = '<h2></h2>
<p>date</p>
<ul></ul>
<iframe></iframe>
<p>apple</p>
<p>banana</p>
<p>grape</p>
<ul></ul>';

$doc = new DOMDocument();
$doc->loadHTML($html);

$xpath = new DOMXpath($doc);

$elements = $xpath->query("//p");
foreach ($elements as $node){
echo $node->nodeValue. "<br/>";
}
于 2012-06-12T16:43:48.307 に答える
1

例:

$html = '<h2></h2>
  <p>date</p>
  <ul></ul>
  <iframe></iframe>
  <p>apple</p>
  <p>banana</p>
  <p>grape</p>
  <ul></ul>';

if (preg_match_all('~<p>(?P<paragraphs>.*?)</p>~is', $html, $matches)) {
  print_r($matches['paragraphs']);
}

結果:

Array
(
    [0] => date
    [1] => apple
    [2] => banana
    [3] => grape
)

PS 「スマート」に反対票を投じる方は、なぜ反対票を投じているのかコメントしていただけますか? :)))))))))))))))

反対票を投じた2人のためのPPS 特別版:

$document = new DOMDocument();
$document->loadHTML($html);
$paragraphs = $document->getElementsByTagName('p');
$result     = array();

foreach ($paragraphs as $paragraph) {
  $result[] = $paragraph->nodeValue;  
}

print_r($result);
于 2012-06-12T16:31:18.363 に答える