2012-02-20 80 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 2012-02-20 17:23:59

回答

0

許多問題......

  • 你們是不是要打造而成的新行字符的字符串?'\n \n \n \n'是不是這樣,它不工作。使用"\n \n \n \n"和閱讀有關字符串here的PHP官方手冊。

  • 您的模式未正確轉義。嘗試'/\\n/',無論如何我不確定你的版本不起作用。

  • 您的'/\\n/'更換的原因是什麼? 請提供輸入字符串和所需輸出的示例。

如果你試圖逃跑字符串將它們保存在數據庫中,你完全在錯誤的道路。谷歌爲php數據庫轉義,並閱讀約mysql_escape_string()(或同等的,如果你不使用MySQL)。有功能可以做到這一點,而你必須使用它們。你不能依賴(或者沒有理由去做)使用正則表達式的自定義函數。

+0

我試圖逃避用戶輸入,所以如果他們輸入\ n當它在數據庫中更新它不僅\ n而是\\ n。 – mintuz 2012-02-20 17:20:16

+1

@明圖茲好吧,所以你**完全錯誤的方式**。我編輯我的答案,接受它,如果我對你的意圖是正確的。 – 2012-02-20 17:22:48

-1

如果你意味着\n是一個新的行字符,您可能無法使用單引號('),用雙引號(「)在這裏,而不是

1

PHP文件:ereg has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.

不管怎麼說,你的$模式不正確地轉義。您需要四個\的 - 請參閱下面:

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