Php 忽略带str_replace的换行符

Php 忽略带str_replace的换行符,php,str-replace,line-breaks,Php,Str Replace,Line Breaks,下面的代码将替换某些文本。实际上,我从一个包含文件内容的文本文件中获取$str数据,所以请想象一下$str中有一行新行 $str = 'From: My Name <myemail@myname.com> To: storm@yahoo.com Message-ID: <1638618225.203837.1426581391642.JavaMail.yahoo@mail.yahoo.com>'; $old = array("My Nam

下面的代码将替换某些文本。实际上,我从一个包含
文件内容的文本文件中获取
$str
数据,所以请想象一下
$str
中有一行新行

$str = 'From: My Name <myemail@myname.com>
        To: storm@yahoo.com
        Message-ID: <1638618225.203837.1426581391642.JavaMail.yahoo@mail.yahoo.com>';

$old = array("My Name", "To: storm@yahoo.com");
$new   = array("New Name", "");
echo str_replace($old, $new, $str );
$str='发件人:我的名字
致:storm@yahoo.com
消息ID:';
$old=数组(“我的名字”,“收件人”:storm@yahoo.com");
$new=数组(“新名称”,“新名称”);
echo str_替换($old,$new,$str);
输出:

From: New Name 

Message-ID: <1638618225.203837.1426581391642.JavaMail.yahoo@mail.yahoo.com>
From:新名称
消息ID:

不幸的是,删除
后:storm@yahoo.com
,代码将创建换行符。如何使用
str\u replace
而不创建新的换行符?

正如您所说,您从文本文件中获取该换行符,如果您显示的是文本文件中的内容,则不是创建换行符,实际上是您没有删除已存在的新行符

试一试

$str='发件人:我的名字
致:storm@yahoo.com
消息ID:';
$old=数组(“我的名字”,“收件人”:storm@yahoo.com\n”);
$new=数组(“新名称”,“新名称”);

就像你说的,你从一个文本文件中得到这个,如果你显示的是文本文件中的内容,那么它不是在创建换行符,实际上是你没有删除已经存在的新行

试一试

$str='发件人:我的名字
致:storm@yahoo.com
消息ID:';
$old=数组(“我的名字”,“收件人”:storm@yahoo.com\n”);
$new=数组(“新名称”,“新名称”);

就像你说的,你从一个文本文件中得到这个,如果你显示的是文本文件中的内容,那么它不是在创建换行符,实际上是你没有删除已经存在的新行

试一试

$str='发件人:我的名字
致:storm@yahoo.com
消息ID:';
$old=数组(“我的名字”,“收件人”:storm@yahoo.com\n”);
$new=数组(“新名称”,“新名称”);

就像你说的,你从一个文本文件中得到这个,如果你显示的是文本文件中的内容,那么它不是在创建换行符,实际上是你没有删除已经存在的新行

试一试

$str='发件人:我的名字
致:storm@yahoo.com
消息ID:';
$old=数组(“我的名字”,“收件人”:storm@yahoo.com\n”);
$new=数组(“新名称”,“新名称”);

str\u replace
不添加新的换行符;它用您支持的内容替换字符串,并且您告诉它用空字符串替换行中的文本。 最简单的方法是在搜索数组中包含换行符:

$old = array("My Name", "To: storm@yahoo.com\n");

stru\u replace
不添加新的换行符;它用您支持的内容替换字符串,并且您告诉它用空字符串替换行中的文本。 最简单的方法是在搜索数组中包含换行符:

$old = array("My Name", "To: storm@yahoo.com\n");

stru\u replace
不添加新的换行符;它用您支持的内容替换字符串,并且您告诉它用空字符串替换行中的文本。 最简单的方法是在搜索数组中包含换行符:

$old = array("My Name", "To: storm@yahoo.com\n");

stru\u replace
不添加新的换行符;它用您支持的内容替换字符串,并且您告诉它用空字符串替换行中的文本。 最简单的方法是在搜索数组中包含换行符:

$old = array("My Name", "To: storm@yahoo.com\n");

它不会创建一条新线,它只是从您的

因此,如果要删除仅包含新行字符的每一行,可以使用以下方法:

(在这里,我首先将
$old
替换为
$new
,然后用新行字符替换字符串。然后使用组合删除每行中的这些字符(
[“”、“\t”、“\n”、“\r”、“\0”、“\x0B”]
)。然后,我删除所有剩余的空行,并在最后再次删除字符串)


它不会创建一条新线,它只是从您的

因此,如果要删除仅包含新行字符的每一行,可以使用以下方法:

(在这里,我首先将
$old
替换为
$new
,然后用新行字符替换字符串。然后使用组合删除每行中的这些字符(
[“”、“\t”、“\n”、“\r”、“\0”、“\x0B”]
)。然后,我删除所有剩余的空行,并在最后再次删除字符串)


它不会创建一条新线,它只是从您的

因此,如果要删除仅包含新行字符的每一行,可以使用以下方法:

(在这里,我首先将
$old
替换为
$new
,然后用新行字符替换字符串。然后使用组合删除每行中的这些字符(
[“”、“\t”、“\n”、“\r”、“\0”、“\x0B”]
)。然后,我删除所有剩余的空行,并在最后再次删除字符串)


它不会创建一条新线,它只是从您的

因此,如果要删除仅包含新行字符的每一行,可以使用以下方法:

(在这里,我首先将
$old
替换为
$new
,然后用新行字符替换字符串。然后使用组合删除每行中的这些字符(
[“”、“\t”、“\n”、“\r”、“\0”、“\x0B”]
)。然后,我删除所有剩余的空行,并在最后再次删除字符串)


它不会创建换行符,它已经存在了。。你只是用没有文本的文本替换一些文本,所以换行符仍然存在。它不会创建换行符,它已经存在了。。你只是用没有文本的文本替换一些文本,所以换行符仍然存在。它不会创建换行符,它已经存在了。。你只是用没有文本的文本替换一些文本,所以换行符仍然存在。它不会创建换行符,它已经存在了。。你只是用没有文本的文本替换了一些文本,所以中断仍然存在。。