当我为\ n执行str_replace时,它会一直替换我脚本中的所有字母“n”。我试图做的是取代这个“看到\ nyou \ nsoon \ n”来说“很快见到你”。除了它剥离句子中的每一个n。我一直得到这个“看你洙”。
是否可以定位,特别是“\ n”而不是“n”?
简单的问题。也许是nimrodic。谢谢你的时间和的解决方案。
编辑>添加代码> 这是我要修复的代码
$text = "Description: Join us today, Sunday644 \u2022 Pastor Ed Weiss \u2022 Faith World\nOutreach Church \u2022 Bartlett, IL \u2022 Starting at 11:30am,\nfwo.org\/webcast<http:\/\/www.google.com\/url?q=http:\/\/fwo.org\/webcast&ust=1340553597624000&usg=AFQjCNE5g0jUGFl1nDLmKOHuIG8M8y3Wcg>\n";
preg_match("/Description: ([^\\r\\n]+)/s", $text, $b);
$text = preg_replace("/\u2022/", "•", $text);
$text = preg_replace("/[\n\r]/"," ",$text);
echo $text;
在我的测试中,我丢失了“r”和“n”字母。
答案 0 :(得分:7)
新行和n
是两个完全不同的字符。
在编程语言中,新行几乎总是表示为\n
,但实际上它只是字符代码10(十进制)。另一方面,n是字符代码110(十进制)。除了转义序列之外,它们之间没有任何关系。
要替换\n
,请仅使用\n
:
$str = str_replace("\n", " ", $string);
修改1 :有关示例,请参阅评论中Conner的代码段posted。
编辑2 :如JoeCortopassi所述,PHP只会在某些类型的字符串文字中解析\n
。例如,'\n'
将以文字\n
字符串结尾。 (字符\
后跟字符n
)。
"\n" //new line (char code 10)
'\n' //literal \ followed by n (char code 92 followed by char code 110)
"\\n" //literal \ followed by n (same as '\n')
'\\n' //literal \ followed by n (same as '\n' :p)
或者:
"\n" === chr(10)
'\n' === "\\n" === '\\n' === chr(92) . chr(110)
答案 1 :(得分:3)
选项#1
如果您的字符串显示如下:
see\nyou\nsoon\n
...然后你会想要使用它:
$str = str_replace('\n', ' ', $string);
...因为PHP会显示反斜杠字符,后跟'n'字符。您使用单引号,因为 php将其解释为literal string 且没有转义字符。
`
选项#2
另一方面,如果你有一个字符串显示如下:
see
you
soon
...然后你会想要使用它:
$str = str_replace("\n", '', $string);
...因为 php会将此字符串视为需要interpreted 的内容。这意味着将处理变量,\n
,\t
和\\
等转义字符将被解释为其文字字符值。
从你所说的内容来看,听起来你的字符串应该是新的行语句,但从未解释过,所以选项#1可能是你最好的选择