2013-01-07 48 views
0

我需要將HTML轉換爲TXT output.like下面的例子,通過PHP,是否有可能?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 
+0

是的,你可以用'用strip_tags()'函數http://php.net/manual/fr/function .strip-tags.php – wakooka

+0

嘿,夥計, 我試過strip_tags(),但它會刪除所有標籤,我也需要html對齊方式..例如:「tr」「td」這樣的對齊 – Srinivasan

+0

@Srinivasan那不是什麼你要?你說你想將HTML轉換爲文本。如果您希望該文本具有HTML對齊方式,那麼請不要從中移除HTML,就這麼簡單。另一方面,我發佈了一個答案,它刪除了所有的HTML但它也使用空白來保持對齊,試試看。 –

回答

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); 
    ?> 

它無論如何都不會輸出。但是它是寫入文件的基本方法,我希望。

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; 
    } 
?> 

我測試的腳本在我的電腦上,這裏是輸出的圖像:

The function at work, I believe this is what you want it to do?

我不得不把輸出<pre>標籤內所以你可以看到函數如何使用空格來格式化文本。輸出看起來完全像你的示例輸出的樣子,我希望這就是你要找的。

+0

嗨,夥計, 我檢查了你的建議,我需要這種類型的功能,但我怎麼可以像單獨的「TD」對齊? – Srinivasan

+0

@Srinivasan我想不出有什麼辦法做到這一點這將是一個非常複雜的任務,它可能需要正則表達式。如果您希望文本的行爲像它在表格中那樣,那麼將它保存在表格中。因爲,由於列被實際的空白分隔開,所以需要進行計算以確定基於單元內容多長時間放置多少空格。爲什麼你需要從這裏剝離HTML? –

+0

Miller, 因爲我需要在點陣式打印機中打印此表單,所以這就是爲什麼我要嘗試此任務 – Srinivasan

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; 
?>