2

如何\n从下面的示例中删除多次出现的 并只替换为一次出现的\n

基本上我只想删除多个换行符并用一个换行符替换它们。

\n\n\n\n\n\n\n\n \n\n \n\n\n\n\n\n\n    \n\n     \n\n     \n\n    \n\n    \n\n     \n\n     \n\n     \n     \n     \n     \n     \n     \n     \n\n     \n\n     \n\n     \nEDITION:  U.S.\n\n \nINTERNATIONAL\n\n     \nMÉXICO\n\n     \n\n     \nSet edition preference\n\n     \n\n     \n\n     \n\n     \nSign up\n\n     \nLog in\n\n     \n\n \n\n     \n\n     \n\n     \n\n\n\n\n\n\n\n\n\n\n\n     \n\n     \n\n\n \n\n \n\n     \n\n     \n\n    \n\n    \n\n     \n\n     \nHome\n\n     \nVideo\n\n     \nNewsPulse\n\n \nU.S.\n\n     \nWorld\n\n     \nPolitics\n\n     \nJustice\n\n     \nEntertainment\n\n     \nTech\n\n     \nHealth\n\n     \nLiving\n\n     \nTravel\n\n \nOpinion\n\n     \niReport\n\n     \nMoney\n\n     \nSports\n\n     \n\n    \n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n \n\n\n\n\n\n\n \n\nupdated 10:02 a.m.EDT, Fri June 3, 2011\n\n\n\n\n\n \n\n\n\n\n\nDr. Jack Kevorkian dead at 83\n\n\n\n\n\n\nThe Michigan pathologist who put assisted suicide on the world\'s medical ethics stage, apparently died of a blood clot, according to his attorney. FULL STORY
4

7 回答 7

3

两种方式

while(strpos($string, "\n\n") !== false)
  str_replace("\n\n", "\n", $string);

preg_replace("/\n+/", "\n", $string);
于 2011-06-03T14:35:19.700 回答
2

这应该有效:

<?php
$string = "\n\n\n\n Text \n\n Text \n\n\n\n\n Text \n\n\n";

echo preg_replace("#[\n]+#", "\n", $string);
于 2011-06-03T14:37:26.810 回答
1

如果这是一个真正的回车,您可以这样做来删除连续的回车:

preg_replace('/\n+/', '\n', $yourString);

否则对于字符串 '\n' 你可以这样做:

preg_replace('/(\\n)+/', '\n', $yourString);

最后,如果您想删除 \n 之间的所有空格,您也可以这样做“

preg_replace('/\s*\n+/', '\n', $yourString);
于 2011-06-03T14:35:57.583 回答
1

+尝试通过使用来强制匹配贪婪++

preg_replace('/\n++/', "\n", $yourString);
于 2011-06-03T14:40:24.957 回答
0

奇怪,代码都不起作用?例子:

$barcodes = "5312353123123



5312353123123



5312353123123";
echo(     var_dump(   $barcodes     )     . '</br>' . "\n"  );
$barcodes = preg_replace('/\n+/', "\n", $barcodes);
exit(  var_dump(   $barcodes     )     . '</br>' . "\n"  );

输出:

string(55) "5312353123123 5312353123123 5312353123123"
string(55) "5312353123123 5312353123123 5312353123123"

这意味着该功能......什么都不做?

于 2012-06-25T08:05:55.127 回答
0

str_replace() 手册页上的陷阱示例的另一种方法是:

// Order of replacement
$str     = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
$order   = array("\r\n", "\n", "\r");
$replace = '<br />';

// Processes \r\n's first so they aren't converted twice.
$newstr = str_replace($order, $replace, $str);
于 2014-02-19T17:18:22.013 回答
0

尝试:

$newstr = preg_replace("/\r\n\r\n|\r\r|\n\n/", "..", $str);
于 2015-10-26T08:49:42.807 回答