0

HTMLをtxt出力に変換する必要があります.phpを介して、以下の例のように、それは可能ですか?

元:

HTML 形式:

<table>
    <tr>
        <td>Srinivasan-1</td>
        <td>welcome-1</td>
    </tr>
    <tr>
         <td>Srinivasan-2</td>
         <td>welcome-2</td>
    </tr>
</table>

このタイプの txt 形式の出力が必要です

Srinivasan-1      welcome-1  Test -1   
Srinivasan-2      welcome-2  Test -2
4

4 に答える 4

0

これを試してみませんか?

  <?php
    $ones= "<table><tr><td>Srinivasan-1</td><td>welcome-1</td></tr><tr><td>Srinivasan-2</td><td>welcome-2</td></tr></table>";

    $ones= strip_tags($ones);

    $file = fopen("test.txt","w");

    fwrite($file,$ones);

    fclose($file);
    ?>

とにかくあなたが望むようにそれは出力しません。しかし、それがファイルへの書き込みの基本的な方法だと思います。

于 2013-01-07T07:41:15.340 に答える
0

うーん... PHP の strip_tags 関数は、何らかの理由で適切ではありませんか?

http://php.net/manual/en/function.strip-tags.php

str_replace を使用して、各終了 td と tr をそれぞれタブと CRLF に置き換えて、探しているように見える出力レイアウトを取得できます。

于 2013-01-07T07:36:57.157 に答える
0

表のようにテキストを書式設定したままにしたい場合、解決策はかなり複雑になります。組み込みの PHP 関数を使用すると、列がテーブルではなく単なるテキストになるため、列間の間隔を均等に保つことができなくなります。

できることは、strip_tags()関数を使用して HTML を取り除くことです。列の間にタブ文字を配置して、列がまだテーブルであるかのように見せることが望ましい場合があります。これが私が作り上げた機能です:

<?php
    function StripHtmlFromTable($html_in)
    {
        $html_in = str_replace("</td>", "\t", $html_in); // Space the columns.
        $html_in = str_replace("</tr>", "\n", $html_in); // Put each row on a new line.
        $text_out = strip_tags($html_in);

        return $text_out;
    }
?>

私は自分のコンピューターでスクリプトをテストしました。これが出力のイメージです。

作業中の機能、これがあなたがやりたいことだと思いますか?

<pre>関数が空白を使用してテキストをフォーマットする方法を確認できるように、出力をタグ内に配置する必要がありました。出力は、出力例とまったく同じように見えます。これが探しているものであることを願っています。

于 2013-01-07T07:56:19.623 に答える
0

一連の正規表現を使用して、それらを改行とタブに置き換えることができます。

<?php
$raw = '<table>
    <tr>
        <td>Srinivasan-1</td>
        <td>welcome-1</td>
    </tr>
    <tr>
         <td>Srinivasan-2</td>
         <td>welcome-2</td>
    </tr>
</table>';
    $patterns = array(
        '/[\n\t]/si', /* remove existing whitespace and linebreaks */
        '/<tr.*?>/s', /* beginning of a row (new line) */
        '/<td.*?>([^<]+)<\/td>/s' /* all cells*/
    );
    $replaces = array(
        "", /* remove whitespace */
        "\n", /* add a new line for each tr */
        "\t$1" /* add a indent and the content of each cell */
    );
    // run the preg replace and strip all other tags
    $text = strip_tags(preg_replace($patterns,$replaces,$raw));
    echo $text;
?>
于 2013-01-07T07:59:21.563 に答える