2017-12-05 9 views
0

私はpdfファイルを作成するためにdompdfを使用しました。私はpdfを生成するためにhtmlファイルの一部を使用しました。私は、テーブルhtmlファイルのprotionを抽出します。

<table> </table> 

間のすべての内容をコピーしたい、私が今置か有効なPDFアウトを持っているので、私はさらにプロセスを自動化したい

を(&貼り付けられたマニュアルの方法をカット) phpで可能なオプションが何であるか知りたいです。 任意の提案は非常にこのコードをここで $sourceは、あなたの完全なhtmlコードになりますしてみてくださいタグの間にデータを抽出するために、この を試してみてください

+3

の内容を渡し、あなたは何を試してみましたか?あなたが遭遇した問題をどこで手助けすることができますか?私たちはあなたのためのすべてのコードを書いていないでしょう、あなたは試しと予想される入力/出力を提供する必要があります。 – IncredibleHat

+0

HTMLファイルのソースは何ですか? –

+0

htmlファイルはPHPコードの出力です。次のコードを使用しています。<?php //出力バッファリングを開始します。 ob_start(); // x.phpファイル内のコードを実行 "itpreviewsheet.php"; //キャプチャした出力をファイルに保存する file_put_contents( 'fileame.htm'、ob_get_contents()); //バッファリングとページの表示終了 ob_end_flush(); ................出力ファイルをhtml形式で取得するには –

答えて

-1

を高く評価しています。 $matchはタグ間で抽出されたデータになります。

コード:

preg_match("'<table>(.*?)</table>'si", $source, $match); if($match) echo "result=".$match[1];

参考:Preg match text in php between html tags

0

DomDocumentを使用する代わりに、正規表現を使用しないでください。

次のクラスは、要素間のコンテンツを抽出します。だからあなたのファイルからHTMLを読み込むか、単にそれをob_get_contents()

<?php 

class DOMExtract extends DOMDocument 
{ 
    private $source; 
    private $dom; 

    public function __construct() 
    { 
     libxml_use_internal_errors(true); 
     $this->preserveWhiteSpace = false; 
     $this->strictErrorChecking = false; 
     $this->formatOutput = true; 
    } 

    public function setSource($source) 
    { 
     $this->source = $source; 
     return $this; 
    } 

    public function getInnerHTML($tag, $id=null, $nodeValue = false) 
    { 
     if (empty($this->source)) { 
      throw new Exception('Error: Missing $this->source, use setSource() first'); 
     } 

     $this->loadHTML($this->source); 
     $tmp = $this->getElementsByTagName($tag); 
     $ret = null; 
     foreach ($tmp as $v) { 
      if ($id !== null) { 
       $attr = explode('=', $id); 
       if ($v->getAttribute($attr[0]) == $attr[1]) { 
        if ($nodeValue == true) { 
         $ret .= trim($v->nodeValue); 
        } else { 
         $ret .= $this->innerHTML($v); 
        } 
       } 
      } else { 
       if ($nodeValue == true) { 
        $ret .= trim($v->nodeValue); 
       } else{ 
        $ret .= $this->innerHTML($v); 
       } 
      } 
     } 
     return $ret; 
    } 

    protected function innerHTML($dom) 
    { 
     $ret = ""; 
     foreach ($dom->childNodes as $v) { 
      $tmp = new DOMDocument(); 
      $tmp->appendChild($tmp->importNode($v, true)); 
      $ret .= trim($tmp->saveHTML()); 
     } 
     return $ret; 
    } 

} 

$html = ' 
<h3>HTML Table Example</h3> 
<div> 
<table id="customers"> 
    <tr> 
    <th>Company</th> 
    <th>Contact</th> 
    <th>Country</th> 
    </tr> 
    <tr> 
    <td>Alfreds Futterkiste</td> 
    <td>Maria Anders</td> 
    <td>Germany</td> 
    </tr> 
    <tr> 
    <td>Centro comercial Moctezuma</td> 
    <td>Francisco Chang</td> 
    <td>Mexico</td> 
    </tr> 
    <tr> 
    <td>Ernst Handel</td> 
    <td>Roland Mendel</td> 
    <td>Austria</td> 
    </tr> 
    <tr> 
    <td>Island Trading</td> 
    <td>Helen Bennett</td> 
    <td>UK</td> 
    </tr> 
    <tr> 
    <td>Laughing Bacchus Winecellars</td> 
    <td>Yoshi Tannamuri</td> 
    <td>Canada</td> 
    </tr> 
    <tr> 
    <td>Magazzini Alimentari Riuniti</td> 
    <td>Giovanni Rovelli</td> 
    <td>Italy</td> 
    </tr> 
</table> 
</div>'; 

$dom = new DOMExtract(); 
$dom->setSource($html); 

echo ' 
<table cellspacing="0" cellpadding="3" border="0" width="100%">', 
    //match and return only tables inner content with id=customers 
    $dom->getInnerHTML('table', 'id=customers'), 
    //match all tables inner content 
    //$dom->getInnerHTML('table'), 
'</table>'; 

https://3v4l.org/OkbQW

<table cellspacing="0" cellpadding="3" border="0" width="100%"><tr><th>Company</th> 
    <th>Contact</th> 
    <th>Country</th> 
    </tr><tr><td>Alfreds Futterkiste</td> 
    <td>Maria Anders</td> 
    <td>Germany</td> 
    </tr><tr><td>Centro comercial Moctezuma</td> 
    <td>Francisco Chang</td> 
    <td>Mexico</td> 
    </tr><tr><td>Ernst Handel</td> 
    <td>Roland Mendel</td> 
    <td>Austria</td> 
    </tr><tr><td>Island Trading</td> 
    <td>Helen Bennett</td> 
    <td>UK</td> 
    </tr><tr><td>Laughing Bacchus Winecellars</td> 
    <td>Yoshi Tannamuri</td> 
    <td>Canada</td> 
    </tr><tr><td>Magazzini Alimentari Riuniti</td> 
    <td>Giovanni Rovelli</td> 
    <td>Italy</td> 
    </tr></table> 
関連する問題