2009-08-18 10 views
6

私は新しい行( '\ n')を含まないPHPの長い文字列を持っています。改行のないPHPの長い文字列

私のコーディング規約では、100文字を超える行は許可されません。

長い文字列を複数の行に分割する方法はありますか?演算子の効率が悪い - 2つの文字列を連結する必要はありません。 という単一の文字列として指定することができます。

ありがとうございます!

heredoc構文でY

答えて

0

(またはnowdoc、あなたのニーズに応じて、ドキュメントのリンクを確認してください):

$multiline = <<<EOT 
My name is "$name". I am printing some $foo->foo. 
This should print a capital 'A': \x41 
EOT; 
$singleline = str_replace("\n","",$multiline); 

しかし、これは吸います... :-)申し訳ありません

+3

heredocの問題は、文字列に改行文字を含めることです。この改行文字は、質問が指定した「改行を含まない文字列」を得るために取り除かれなければなりません。 – Amber

+0

Liorが –

+0

と表示されているので、ストリップすることができます。ただし、連結を使用するのと同じようにパフォーマンスが低下します。 – Amber

1

あなたは文字列から改行文字を取り除くことができます:

$myStr = " 
    here is my string 
    and it is spread across multiple lines 
    "; 
    $myStr = str_replace("\n", "", $myStr); 

そのようなものには連結演算子(。)を使用します。オペコードキャッシング(APC)を使用している場合、パフォーマンスペナルティは無視できます。これは、実行時間の式にDBアクセスと追加のロジック(ループを含む)を取るときに目立つものではありません。

更新:

読み取り、以下のページを与えます。上記の結論は本文では容易に入手できませんが、有効であることを慎重に検討する必要があります。

http://blog.golemon.com/2006/06/how-long-is-piece-of-string.html

+0

オペコードのキャッシングは文字列連結の速度にどのように影響しますか? –

+0

パーサは、動的要素のない文字列を1つの長い文字列として扱い、連結演算子を削除します。私はしばらく前にこの主題を掘り下げました。私は再びそれを見つけるために管理すると、関連する記事でこの答えを更新します。 –

2

これはすべての問題を解決し、右のコード、次のとおりです。

$myStr = " 
    here is my string 
    and it is spread across multiple lines 
    "; 
    $myStr = str_replace(array("\r","\n"), "", $myStr); 

それはLIOR Cohenの回答に基づいて、それはまた、 "\ rを" キャリッジリターンをストリップされます。

関連する問題