0

私はこのコードを持っています

if($hgroup['groupid'] == $row_groups['groupid']){
  $problem++;
  $hostname=DBfetch($cursor_gethost_again);
  $replace_macro=array('/{HOSTNAME}/','/{HOST.NAME}/');
  $problem_text=$problem_text.$trigger['description'];
  $problem_text=preg_replace($replace_macro,$hostname['name'],$problem_text);
  $problem_text=$problem_text."\r\n";
}

周期的に生成するコードです。誰かがその愚かな改行を作る方法を私に手伝ってもらえますか?1つのコードを変更しているので、この方法で行う必要があります。だから私はそのレイアウトを維持したいと思います。
動作しません。テキストで印刷します。また、preg_replaceをに試し<br />ます。

4

4 に答える 4

5

HTMLを印刷しようとしている場合、新しい行は使用されていません\r\nが、を追加してい<br/>ます。

コメントで、これをブラウザで表示しようとしていることを確認しました。Kolinkが言ったように、ブラウザは空白をスペースに折りたたむので、改行情報は失われます。

値をコンソールなどの標準出力に出力する場合は、それ\r\nが解決策です。書き込みたいファイルを扱っている場合も同じです。

それを標準出力とHTMLの両方に出力したい場合は、最初にそれを入力し\r\n、変数を出力してから、(ここstr_replaceのドキュメント)を使用してすべてを次のように変換することをお勧めします。\r\n<br/>

$html_problem_text = str_replace('\r\n', '<br/>', $problem_text);
于 2012-11-22T15:24:03.887 に答える
3

推測を投げかけるだけで、ブラウザで出力を表示していますか?ブラウザは改行文字(または任意の空白)を単一の(水平)スペースに折りたたむためです。

<br />タグを使用してブラウザに改行を作成する必要があります。または、または<pre>CSSを使用して、ブラウザに改行を強制的にレンダリングさせることもできます。

于 2012-11-22T15:24:11.287 に答える
1

http://php.net/manual/en/language.types.string.php

\n = CR (Carriage Return) // new line character in Unix
\r = LF (Line Feed) // new line character in Mac OS
\n\r = CR + LF // new line character in Windows
于 2012-11-22T15:29:25.473 に答える
1

HTMLで印刷する場合:

次を使用できます。

$problem_text=$problem_text."<br/>";

または、必要に$problem_text=$problem_text."\r\n";応じて保持しますが、出力するときは、次のようにします。

nl2br($myvariable);

この関数は基本的に「brへの改行」であり、新しい行をに置き換えるので、変数にを<br/>含める必要はありません。"<br/>"

".="また、参考までに、「このテキストを変数に連結する」という意味で使用できます。

$problem_text=$problem_text."\r\n";
$problem_text .= "\r\n";

それらは同じことを意味します。同じ規則により、算術演算には+ =や-=のような他の演算子があります(。=は文字列を連結するためだけのものです)。

于 2012-11-22T15:32:35.560 に答える