我已经花了几个小时来解决这个问题,但由于我缺乏preg_match知识,即使在研究之后也可能很容易。这可以将多行删除为一行:
$string = preg_replace('/^\n|^[\t\s]\n/m', "", $string);
如何反转其功能以便忽略多行并删除单行空格?所以如果输入是:
one
two
three
它会删除1到2之间的空格,但在三个之前忽略多个空格,结果如下:
one
two
three
感谢。
编辑帖子
谢谢你们。 3emad,你的代码适用于我的例子。我错了,我希望这可以使用代码而不仅仅是我的文本,当我尝试使用
时// ----- limits -----
$new_limit = 7; // maximum days in What's New section
$hot_limit = 20; // top 20 most accessed links
$toprated_limit = 20; // top 20 most rated links
// ----- bold the keyword in search result -----
$bold_keyword = 1;
它没有删除变量之间的单行,而忽略了导致注释的双重空格。
答案 0 :(得分:1)
这是正则表达式:
[\r|\r\n](?=\w)
这适用于您的示例,您可以在RegExr
进行测试秘诀是使用积极的前瞻匹配,你可以了解更多关于“向前看”here
$str = '// ----- limits -----
$new_limit = 7; // maximum days in What\'s New section
$hot_limit = 20; // top 20 most accessed links
$toprated_limit = 20; // top 20 most rated links
// ----- bold the keyword in search result -----
$bold_keyword = 1;';
echo '<pre>';
echo preg_replace('/\r?\n(?=[\w|\$])/m','',$str);
echo '</pre>';
对正则表达式有用PHP reference
答案 1 :(得分:1)
不确定这是否是完美的解决方案,这将删除额外的行+额外空格+标签
<?php
$input="this is nimit
and friends
this must be in single line.
@234 234234
I have test this.
";
$input = str_replace(' ','_',$input);
$result = preg_replace('/\s+/','<br>',$input);
$result = str_replace('_',' ',$result);
echo $result;
?>