Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除PHP中的各种空白_Php_Regex_Whitespace_Removing Whitespace - Fatal编程技术网

删除PHP中的各种空白

删除PHP中的各种空白,php,regex,whitespace,removing-whitespace,Php,Regex,Whitespace,Removing Whitespace,我希望使用正则表达式删除多个换行符。假设我有这段文字: “插入”选项卡上的“”\n\n\n库包括\n\n设计的项目“ 然后我想用 “插入”选项卡上的“”\n库包括\n设计的项目“ 所以我的要求是: 它将删除所有多个换行符,并将替换为一个换行符 它将删除所有多个空间,并将替换为一个空间 空间也将被修剪 我确实搜索了很多,但找不到解决方案-我得到的最接近的是这一个。使用这个: echo trim(preg_replace('#(\s)+#',"$1",$string)); 使用以下命令: echo

我希望使用正则表达式删除多个换行符。假设我有这段文字:

“插入”选项卡上的“
”\n\n\n库包括\n\n设计的项目“

然后我想用

“插入”选项卡上的“
”\n库包括\n设计的项目“

所以我的要求是:

  • 它将删除所有多个换行符,并将替换为一个换行符
  • 它将删除所有多个空间,并将替换为一个空间
  • 空间也将被修剪
  • 我确实搜索了很多,但找不到解决方案-我得到的最接近的是这一个。

    使用这个:

    echo trim(preg_replace('#(\s)+#',"$1",$string));
    
    使用以下命令:

    echo trim(preg_replace('#(\s)+#',"$1",$string));
    
    这将对换行符进行排序

    $text = trim($text);
    preg_replace('/\s+/', ' ', $text);
    preg_replace('/(?:\s*(?:\r\n|\r|\n)\s*){2}/s', "\n", $text);
    
    这将对换行符进行排序

    $text = trim($text);
    preg_replace('/\s+/', ' ', $text);
    preg_replace('/(?:\s*(?:\r\n|\r|\n)\s*){2}/s', "\n", $text);
    
    多亏了


    多亏了

    ,这里是你的空格部分:@Sudhir我可以删除多个空格,但我还需要删除多个换行符。请参见:@ARIFMAHMUDRANA这里是该技术的简略介绍:1)修剪字符串。2) 查找包含多个空白字符的所有块。3) 如果块包含一个
    \n
    字符,则对其进行迭代;如果块不包含一个
    \n
    字符,则将其替换为一个空格。最简单的方法是使用
    preg\u replace\u callback()
    。我甚至会免费给你需要的正则表达式:
    /\s+/
    。试着自己实施,如果你做不好,展示你的想法,然后,我们可以帮助您查看出了什么问题。@Sudhir是否适用于换行符之间的空格?以下是您的空格部分:@Sudhir我可以删除多个空格,但我也需要删除多个换行符。请参见:@ARIFMAHMUDRANA这里是该技术的一部分:1)修剪字符串。2) 查找包含多个空白字符的所有块。3) 如果块包含一个
    \n
    字符,则对其进行迭代;如果块不包含一个
    \n
    字符,则将其替换为一个空格。最简单的方法是使用
    preg\u replace\u callback()
    。我甚至会免费给你需要的正则表达式:
    /\s+/
    。试着自己实施,如果你做不好,展示你的想法,然后,我们可以帮助您查看出了什么问题。@Sudhir是否适用于换行符之间的空格?这将用
    \n\n
    替换
    ,当它应该替换为
    \n
    @Yazmat时,关键是检查您在字符串中检测到的每个标记,并查看它是否包含新行,如果有,则返回一个新行;如果没有,则返回一个空格。我还将给您一个提示,告诉您如何轻松地执行此操作:
    preg\u replace\u callback()
    。还要注意的是,虽然您的表达式是正确的,并且可以工作,但它将非常低效,因为您将检查每个空格块(包括单个字符)只需检查两个或多个空白字符的块。这会将
    \n\n
    替换为
    ,而应将其替换为
    \n
    @Yazmat。关键是检查字符串中检测到的每个标记,并查看其是否包含新行,如果有,则返回一个新行;如果没有,则返回一个空格。我还将给您一个提示,告诉您如何轻松地执行此操作:
    preg\u replace\u callback()
    。还要注意的是,虽然表达式是正确的并且可以工作,但是效率很低,因为您将检查每个空白块(包括单个字符),而您只需要检查两个或更多空白字符的块。