0

私は現在移行プロセスにあり、既存の Web サイトの CMS を作成したいと考えています。今まで (数年間) 完全な html ファイルを生成して保存していましたが、それらのページのコンテンツをデータベースに保存したいと考えています。私の幸運は、各 html から取得したい 2 つの要素が 1 つの html ファイル内で一意であり、すべてのファイルで同じであるということです。私はこれを試しました:

if ($handle = opendir('.')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            $string= file_get_contents($entry);
            $pattern = "/<h1>(.*?)<\/h1>/";
            preg_match_all($pattern, $string, $uname);
            $pattern = '/<p class=\"user_info\"><strong>(.*?)<\/strong><\/p>/';
            preg_match_all($pattern, $string, $udesc);
            echo "NAME: ".$uname[1][0]."<br>";
            echo "DESC: ".$udesc[1][0]."<br>";
            //MYSQL SAVING WILL GO HERE
        }
    }
    closedir($handle);
}

上記のコードは (h1)NAME(/h1) ((==< and )==>) の部分を抽出しますが、 (p class="user_info")(strong)CONTENT(/strong)(/p) の部分は抽出しません。それはただの空白です。

私も別の方法を試しました:

if ($handle = opendir('.')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            $string= file_get_contents($entry);
            $doc = new DOMDocument();
            $doc->loadHTML($string);
            $h1 = $doc->getElementsByTagName('h1')->item(0)->textContent;
            echo "NAME: ".$h1."<br>";
            $p = $doc->saveHtml($doc->getElementsByTagName('p')->item(0)); // $p = $doc->getElementsByTagName('p')->item(0)->textContent; loads content, just without html tags, so I can not use it... :S
            echo "DESC: ".$p."<br>";
            //MYSQL SAVING WILL GO HERE
        }
    }
    closedir($handle);
}

上記のコードは機能しますが、期待どおりではありません。テキストだけでなく、段落の完全な HTML コードが必要です。$doc->savehtml() も試しましたが、まだ何もありません。

助けてください、そして前もって感謝します!

4

1 に答える 1