2016-11-09 7 views
-1

PHPのフロントエンドで余分なスペースを節約する方法は?私は、データベースに格納されている正確な文字列以下のいる

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an       unknown printer took a galley of type and scrambled it      to make a type specimen book. 


It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. 

は、余分なスペースと、私は、文字列に追加した余分な段落/改行に注意してください。

私はこのデータをecho nl2br($val);を使って示していますが、段落改行は保持されていますが、文字列内の余分なスペースは削除されています。

どうすればこの問題を解決できますか。

+0

参照:http:// stackoverflow。com/q/2300142/3933332 – Rizier123

+2

これは本当に[tag:html]より[tag:php]ともっと関係があります... – deceze

+1

本当の質問はあなたがこれをしたい理由です - あなたのテキストをフォーマットしようとしているなら空白のブロックを入れると間違ったことになります。 HTMLとCSSで利用可能なすべての書式設定機能では、スペース文字でそれをしようとする理由はほとんどありません。あなたが与えた例は、明らかにあなたが達成しようとしているものの正確な表現ではないので、私はさらに進んでそれをどうするべきか言っても難しいですが、スペースは答えではありません。 – Simba

答えて

0

<pre><?= $val; ?></pre>タグラッパーを使用して、テキスト内の空白と改行を保存します。

1

PHPはスペースを削除しません。 HTMLでさえありません。

しかし、HTMLは、レンダリング時に2つ以上の連続する空白を1つに圧縮します。これはHTMLの仕組みだからです。

テキストをそのままレンダリングする方法はいくつかあります。

そのうちの一つは、<pre>要素にテキストを置くことです:

echo '<pre>', $val, '</pre>'; // there is no need to nl2br() 

別のオプションは、CSS属性white-spaceを使用してレンダリング要素を強制することです:

echo '<p style="white-space: pre;">', $val, '</p>'; 
+0

@deceze関数のように 'echo()'を使うのはどうですか? (文字列を連結することのパフォーマンスのペナルティを除けば、ほとんどの時間はそれほど重要ではありません...) – axiac

+0

それ自体は何も間違っていますが、余計です。これは、すべての式の周りに余分な括弧を追加するようなものです( 'foo(((2 + 2)))))。それは何もしないので、おそらく正規のコードサンプルに含まれていないはずです。 – deceze

+0

私は同意しません。また、ステートメントが1つしかない場合は、条件付きステートメントとループから中括弧を削除しますか?このような文脈で中括弧は余分で何もしないのですか? – axiac

-1

の意志コードの下にしてみましょうテキスト内に空白や改行を残しておきます。

$str = "<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an       unknown printer took a galley of type and scrambled it      to make a type specimen book.</p> 

<p>It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>"; 

echo preg_replace("/\r|\n/", "", $str); 
0

空白は、HTMLの仕組みによって閉じられます。

それらを保存するための最良の方法は、以下のとおりです。

  1. &nbsp;とスペースを交換してください。
    これは、「非改行スペース」文字のHTMLエンティティです。スペースとして表示されますが、ブラウザで印刷可能な文字として扱われます。したがって、通常のスペースと同じように閉じられることはありません。また、ブラウザがその時点でワードラップするのを防ぐので、ワードを一緒にしたい場合に便利です。

  2. CSS white-space: pre;を使用してください。
    これにより、ブラウザはすべてのスペースを閉じなくなります。また、あなたのテキストにキャリッジリターンを戻すので、あなたが求めているものはかなりです。あなたのページレイアウトにノックオン効果があるかもしれません。

いずれかのトリックを行います。しかし、私は上記のコメントで述べたことをもう一度繰り返します - テキストの書式を操作するスペースを使用することは、ほとんど常に間違った解決策です。 15年前にIE6が王様になっていて、CSSの機能を利用できなかったこともありましたが、今日ではそれが正しいアプローチではありません。

関連する問題