簡體   English   中英

使用PHP HTML SIMPLE DOM PARSER與 <pre> 標簽

[英]using PHP HTML SIMPLE DOM PARSER with <pre> tag

我正在使用SIMPLE HTML DOM PARSER PHP。

我要解析的文檔的部分來源是

<pre>

LINE 1

LINE 2

LINE 3

</pre> 

這些代碼定義為$ string

我寫了那些PHP代碼

$html = str_get_html($string);

$ret = $html->find('pre',0)->plaintext;

echo $ret;

結果是

1號線2號線3號線

但在網絡瀏覽器中,這些HTML代碼正在顯示

1號線

2號線

3號線


網絡瀏覽器的顯示是我想要的。 如何在PHP中獲得相同的結果?

您需要在simple_html_dom.php文件中將Default Parameter $ stripRN設置為false

例如

$stripRN = false;

更改兩個函數file_get_htmlstr_get_html

所以這

function file_get_html($url, $use_include_path = false, $context=null, $offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)

變成

function file_get_html($url, $use_include_path = false, $context=null, $offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=false, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)

和這個

function str_get_html($str, $lowercase=true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)

變成

function str_get_html($str, $lowercase=true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=false, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)

您想換行,對嗎? 以下應該工作:

<?php 
    foreach ($ret as $string) {
        echo "$string\n";
    }

編輯:原始代碼的反向作用。

您可以使用以下命令在每一行上回顯文本:

在瀏覽器中輸出:

1號線

2號線

3號線

檔案內容:

<pre>
LINE 1

LINE 2

LINE 3
</pre>

PHP代碼:

<?php

$lines = file('myfile.txt');

foreach ($lines as $line_num => $line) {

    echo ($line);

}

?>

原始答案,誤解了OP的問題,但仍然有用的代碼。

您可以使用以下代碼在一行中回顯文本。

檔案內容:

<pre>
LINE 1

LINE 2

LINE 3
</pre>

在瀏覽器中輸出:LINE 1 LINE 2 LINE 3

PHP代碼:

<?php

$lines_of_file = file("myfile.txt");
//Now $lines_of_file have an array item per each line

$file_content = file_get_contents("myfile.txt");
$file_content_separated_by_spaces = explode(" ", $file_content);

echo $file_content;

?>

我無法弄清楚如何使用Simple HTML Dom Parser,但是Zend的Dom Query包成功了。 以下代碼用於維護pre元素內文本的格式:

$dom = new Zend\Dom\Query($html_string);
$results = $dom->execute('pre');
foreach ($results as $result) { // each $result is of type DOMElement
        echo $result->ownerDocument->saveXML($result);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM