2010-09-06 143 views
2

我正在使用str_replace,它无法正常工作。 我有一个文本区域,其输入与表单一起发送。当服务器收到数据时,我想将新行更改为“,”。PHP str_replace不能正常工作

$teams = $_GET["teams"]; 
$teams = str_replace("\n",",",$teams); 
echo $teams; 

奇怪的是,我收到以下结果

切尔西

,真正

,巴塞罗那

,而不是Chealsea,真实的,巴塞罗那。

怎么了?

回答

8

要扩大Waage的回应,你可以使用数组来代替这两个字符集

$teams = str_replace(array("\r\n", "\n"),",",$teams); 
echo $teams; 

这应该妥善处理好这两个项目,作为一个单一的\n的是有效的,不会被抓到如果你只是更换\r\n

+0

'TRIM()'只从字符串的开头和结尾删除空格字符,而不是在中间。 – BoltClock 2010-09-06 23:50:44

+0

是的,它在我看来,他不是这样做到字符串的末尾:)修改是一个更好的回应! – 2010-09-06 23:52:20

+0

现在有点迷路了,这两个答案有什么区别? – 2010-09-06 23:55:55

4

尝试更换"\r\n",而不是仅仅"\n"

3

我会修剪文本并用co替换所有连续的CR/LF字符mma:

$text = preg_replace('/[\r\n]+/', ',', trim($text)) 
0

我有同样的问题,但发现不同的答案,所以认为我会分享,以防它可以帮助某人。

我遇到的问题是我想用<br/>代替\n用HTML打印。简单的变化,我不得不做是为了躲避反斜线str_replace("\n","<br>",($text))这样的:

str_replace("\\n","<br>",($text))