25

PHP Simple HTML DOM Parser を使用する場合、改行
タグが削除されるのは正常ですか?

4

5 に答える 5

58

これは古いことは知っていますが、私もこれを探していて、実際には改行の削除をオフにする組み込みのオプションがあることに気付きました。ソースを編集する必要はありません。

PHP Simple HTML Dom Parserのload関数は、複数の便利なパラメーターをサポートしています。

load($str, $lowercase=true, $stripRN=false, $defaultBRText=DEFAULT_BR_TEXT)

関数を呼び出すときは、3番目のパラメーターとしてload渡すだけです。false

$html = new simple_html_dom();
$html->load("<html><head></head><body>stuff</body></html>", true, false);

を使用する場合file_get_html、これは9番目のパラメーターです。

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)

編集:の場合str_get_html、これは5番目のパラメーターです(yitwailに感謝)

str_get_html($str, $lowercase=true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)
于 2012-02-22T02:44:57.003 に答える
21

処理後にHTMLを簡単に編集できるようにする必要があったため、これにも苦労していました。

どうやら、SimpleHTMLDOMスクリプト$stripRNにはブール値があり、デフォルトで設定されtrueています。HTMLの\r\nまたは\r\nタグを削除します。

varをfalse(スクリプト内のいくつかのオカレンス..)に設定すると、問題は解決します。

于 2011-09-29T13:49:28.353 に答える
2

すべてを false に変更する必要はありません。$stripRNこの動作に影響するのは 816 行目だけです:

// load html from string
function load($str, $lowercase=true, $stripRN=false, $defaultBRText=DEFAULT_BR_TEXT) {

また、988 行目を変更することも検討してください。マルチバイト関数は、西欧以外の言語を処理しないマシンにはインストールされていないことが多いためです。v1.5 の元の行は、スクリプトをすぐに中断します。

if (function_exists('mb_detect_encoding')) { $charset = mb_detect_encoding($this->root->plaintext . "ascii", $encoding_list = array( "UTF-8", "CP1252" ) ); } else $charset === false;
于 2011-11-15T23:27:27.233 に答える
-2

段落や見出しなどの他のフォーマットを保持したい場合の別のオプションは、結果で独自の文字列クリーニングを実行するのinnertextではなく、使用することです。plaintext

パフォーマンスが低下していることは認識していますが、よりきめ細かな制御が可能です。

于 2012-03-25T11:33:30.093 に答える