Я пытался понять это в течение часа. Мне просто нужно простое исправление, от которого я могу учиться. Как удалить несколько вхождений из \ n из примера ниже и заменить только одним вхождением \ n? благодаря
EDIT: в основном я просто хочу удалить несколько разрывов строк и заменить их одним разрывом строки.
\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: US\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 amEDT, 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
2 способа
while(strpos($string,"\n\n")!==false) str_replace("\n\n","\n",$string);
вwhile(strpos($string,"\n\n")!==false) str_replace("\n\n","\n",$string);
А также
preg_replace("/\n+/","\n",$string);
Это должно работать:
<?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);
Если это реальный возврат каретки, вы можете сделать это, чтобы удалить последовательные возвращения каретки:
preg_replace('/\n+/','\n',$yourString);
else для строки '\ n' вы можете сделать
preg_replace('/(\\n)+/','\n',$yourString);
наконец, если вы хотите удалить все пробелы между вашим \ n, вы можете сделать
preg_replace('/\s*\n+/','\n',$yourString);
Попробуйте принудить совпадение +
быть жадным, используя вместо этого ++
.
preg_replace('/\n++/',"\n",$yourString);
Странно, ни один из кода не работает? Пример:
$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"
Это означает, что функция ничего не делает?
Другой путь из примеров getcha на странице man для 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);
Пытаться:
$newstr = preg_replace("/\r\n\r\n|\r\r|\n\n/", "..", $str);