1

私はこのようなhtml文字列を持っています(これは完全にhtmlではありません):

<h2>Title A</h2>
  <p>aaaaaa</p>
  <p>bbbbbb</p>
<h2>Title B</h2>
  <p>aaaaaa</p>
  <p>bbbbbb</p>
<h2>Title C</h2>
  <p>aaaaaa</p>
  <p>bbbbbb</p>

そして、(h2タグから)タイトルのみの配列を取得したいと思います。

array(Title A, title B, Title C);

私はphpを使用しています。

私が試してみました

strip_tags(string,'<h2>')

<p>しかし、タグの後にタイトルとコンテンツが続きます。

4

5 に答える 5

14

使ってみることができますDOMDocument

    $html = '<h2>Title A</h2>
      <p>aaaaaa</p>
      <p>bbbbbb</p>
    <h2>Title B</h2>
      <p>aaaaaa</p>
      <p>bbbbbb</p>
    <h2>Title C</h2>
      <p>aaaaaa</p>
      <p>bbbbbb</p>';

$dom = new \DOMDocument();
$dom->loadHTML($html);

$items = $dom->getElementsByTagName('h2');

for($i = 0; $i < $items->length; $i ++) {
    echo $items->item($i)->nodeValue . PHP_EOL;
}

出力

Title A
Title B
Title C
于 2012-09-28T09:23:44.177 に答える
3

PHPには、HTML解析用の優れたライブラリがすでに組み込まれています。ここでは、xpathを使用したパーサーです。

$h2 = array_map(
    'strval', simplexml_import_dom(\DomDocument::loadHTML($html))->xpath('//h2')
);

出力:

array(3) {
  [0]=>
  string(7) "Title A"
  [1]=>
  string(7) "Title B"
  [2]=>
  string(7) "Title C"
}

HTMLとPHPを聞いた場合は、他のDOMDocument関連の回答も参照してください。DomDocumentと考えてください。


$doc = new DomDocument;
$doc->loadHTML($html);
$h2  = array_map(
    'strval', simplexml_import_dom($doc)->xpath('//h2')
);
于 2012-09-28T09:32:08.833 に答える
1

HTMLを解析するには、 DomDocumentなどのパーサーを使用する必要があります。

于 2012-09-28T09:22:21.327 に答える
1

DOMDocumentの代わりにSimpleXMLを使用できます

http://codepad.viper-7.com/Esairr

$html = '
    <html>
        <h2>Title A</h2>
        <p>aaaaaa</p>
        <p>bbbbbb</p>
        <h2>Title B</h2>
        <p>aaaaaa</p>
        <p>bbbbbb</p>
        <h2>Title C</h2>
        <p>aaaaaa</p>
        <p>bbbbbb</p>
    </html>';
$xml = new SimpleXMLElement($html);

echo "<pre>";
print_r($xml->h2);
echo "</pre>";

出力

SimpleXMLElement Object
(
    [0] => Title A
    [1] => Title B
    [2] => Title C
)
于 2012-09-28T09:28:19.753 に答える
0

あなたが使うことができますpreg_match_all

preg_match_all("/<h2>(.*?)</h2>/si", $sResource, $aTitles);
print_r($aTitles[1]);

ただし、スクリプトと干渉する可能性のある特定の文字や改行などがあるため、このようにPHPでHTMLを解析することはお勧めしません。DOMパーサーは、これに代わる優れた簡単な方法です。

于 2012-09-28T09:25:27.770 に答える