2012-02-20 4 views
0
<?php 
$string = '\n \n \n \n'; 
$patterns = '/\n/'; 
$replacements = '/\\n/'; 
echo preg_replace($patterns, $replacements, $string); 
?> 

このコードセグメントは機能していないようですが、なぜこのようなことが起こっているのかについての提案はありません。それはまったく何もエコーしません。私はそれをeregと連動させることができますが、pregに切り替えることを望みました。ereg_replaceとpreg_replace

+0

eregは廃止されました。 – CBusBus

答えて

0

多くの問題...

  • あなたは改行文字で作られた文字列を作成しようとしている?'\n \n \n \n'は、それがない作品を行う方法ではありません。"\n \n \n \n"を使用して文字列hereについてPHP公式マニュアルをお読みください。

  • あなたのパターンは正しくエスケープされません。試してください'/\\n/'、とにかく私はあなたのバージョンが動作しないかどうかはわかりません。

  • '/\\n/'の理由は何ですか? 入力文字列と出力の例を示してください。

データベースに保存する文字列を脱出しようとしている場合、あなたは間違った方法に完全にです。 GoogleがのPHPデータベースをエスケープし、約mysql_escape_string()(またはMySQLを使用していない場合は同等のもの)を読んでください。それを行う機能があり、にはを使用する必要があります。正規表現を使用してカスタム関数に依存することはできません(またはそれを行う理由はありません)。

+0

私はユーザー入力をエスケープしようとしています。したがって、データベースで更新されたときに\ nを入力すると、\ nではなく\\ nが入力されます。 – mintuz

+1

@ミントズ・オク、あなたは**完全に間違った方向にいる**。私は私の答えを編集し、私があなたの意図について正しいのであればそれを受け入れます。 –

-1

あなたは改行文字であることを\nのために意味場合は、単一引用符( ')を使用することはできません、二重引用符( ")を使用し、ここで代わりに

1

PHPドキュメント:とにかくereg has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.

、あなたの$パターンが適切にエスケープされていません。下記の4つの\が必要です。

<?php 
$string = '\n \n \n \n'; 
$patterns = '/\\\\n/'; 
$replacements = '/\\n/'; 
echo preg_replace($patterns, $replacements, $string); // string(19) "/\n/ /\n/ /\n/ /\n/" 
?>