忽略带有 str_replace 的换行符
Ignore break line with str_replace
下面的代码将替换某些文本。实际上我从一个文本文件中获取 $str
数据 file_get_contents
所以请想象 $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 );
输出:
From: New Name
Message-ID: <1638618225.203837.1426581391642.JavaMail.yahoo@mail.yahoo.com>
不幸的是,删除 To: storm@yahoo.com
后,代码将创建一个换行符。如何在不创建新断线的情况下使用 str_replace
?
就像你说的那样,你是从文本文件中得到的,如果你显示的是文本文件中的内容,那么它并没有创建换行符,实际上是你没有删除已经存在的换行符。
尝试
$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\n");
$new = array("New Name", "");
str_replace
不加新换行;它用你支持的字符串替换字符串,你告诉它用空字符串替换行中的文本。
最简单的方法是在搜索数组中包含换行符:
$old = array("My Name", "To: storm@yahoo.com\n");
它不会创建一个新行,它只是从您的 str_replace()
.
中留下的
所以如果你想删除每一行只包含换行符的行,你可以使用这个:
(这里我先把$old
替换成$new
,然后再explode()
the string by new line characters. Then I use array_map()
combined with trim()
to remove these characters (["", "\t", "\n", "\r", "[=17=]", "\x0B"]
) from every line. Then I remove all remaining empty lines with array_filter()
and at the end I implode()
这个字符串)
echo $str = implode(PHP_EOL,
array_filter(
array_map("trim",
explode(PHP_EOL, str_replace($old, $new, $str))
)
)
);
下面的代码将替换某些文本。实际上我从一个文本文件中获取 $str
数据 file_get_contents
所以请想象 $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 );
输出:
From: New Name
Message-ID: <1638618225.203837.1426581391642.JavaMail.yahoo@mail.yahoo.com>
不幸的是,删除 To: storm@yahoo.com
后,代码将创建一个换行符。如何在不创建新断线的情况下使用 str_replace
?
就像你说的那样,你是从文本文件中得到的,如果你显示的是文本文件中的内容,那么它并没有创建换行符,实际上是你没有删除已经存在的换行符。
尝试
$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\n");
$new = array("New Name", "");
str_replace
不加新换行;它用你支持的字符串替换字符串,你告诉它用空字符串替换行中的文本。
最简单的方法是在搜索数组中包含换行符:
$old = array("My Name", "To: storm@yahoo.com\n");
它不会创建一个新行,它只是从您的 str_replace()
.
所以如果你想删除每一行只包含换行符的行,你可以使用这个:
(这里我先把$old
替换成$new
,然后再explode()
the string by new line characters. Then I use array_map()
combined with trim()
to remove these characters (["", "\t", "\n", "\r", "[=17=]", "\x0B"]
) from every line. Then I remove all remaining empty lines with array_filter()
and at the end I implode()
这个字符串)
echo $str = implode(PHP_EOL,
array_filter(
array_map("trim",
explode(PHP_EOL, str_replace($old, $new, $str))
)
)
);