php - 从字符串中删除换行符后的双空格和空格

标签 php regex

所以,首先我有这个输入

$string = "Lorem ipsum 
dolor sit amet, consectetur adipiscing 
elit https://www.youtube.com/watch?v=example sed do eiusmod tempor incididunt https://www.youtube.com/watch?v=example2 https://www.youtube.com/watch?v=example3";
然后我想从 $string 中删除 url使用正则表达式
$string = preg_replace('/[(http(s)?):\/\/(www\.)?a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)/', '', $string);
从字符串中删除所有 url 后,输出将是
Lorem ipsum 
dolor sit amet, consectetur adipiscing 
 elit  sed do eiusmod tempor incididunt  
问题是,有双重空间,我想让它更整洁
我试过使用这个,它将用单个空格替换所有双空格
$string = preg_replace('/\x20+/', ' ', $string);
还有另一个问题是换行后有一个空格
Lorem ipsum 
dolor sit amet, consectetur adipiscing 
 elit sed do eiusmod tempor incididunt
这让我很不舒服。
我需要一个解决方案来摆脱 url,但也要使其整洁。
我想要的最后结果是这样的
Lorem ipsum 
dolor sit amet, consectetur adipiscing
elit sed do eiusmod tempor incididunt
对不起,如果它看起来很奇怪,谢谢

最佳答案

使用 preg_replace() 删除所有 URL。
使用 trim() 删除任何剩余的空间
再次使用 preg_replace()删除任何混音空格。 ( regex )
然后,要删除在该行开头产生的任何空格,请将它们替换为空以将其删除。

<?php

    $r = '/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i';
    $string = "Lorem ipsum
    dolor sit amet, consectetur adipiscing
    elit https://www.youtube.com/watch?v=example sed do eiusmod tempor incididunt https://www.youtube.com/watch?v=example2 https://www.youtube.com/watch?v=example3";

    // Remove url's
    $clean = preg_replace($r, ' ', $string);

    // Trim whitespaces
    $clean = trim($clean);

    // Replace dubble-space with single space
    $clean = preg_replace( '/\h+/', ' ', $clean);

    // Remove any spaces after newline
    $clean = preg_replace('/^ /m', '', $clean);

    // Show result
    echo $clean;

输出:
Lorem ipsum 
dolor sit amet, consectetur adipiscing 
elit sed do eiusmod tempor incididunt
Try online

注:这可以通过结合一些调用来简化很多,我选择不这样做,所以步骤更清晰

关于php - 从字符串中删除换行符后的双空格和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64317046/

相关文章:

php - PHP 中的文件资源持久性

javascript - Magento 尝试触发鼠标悬停效果

php - 双美元符号 php

javascript - 如何获取PHP回显的div内容

php - Parse 的 REST API 和 PHP Curl 请求 - 如何

python - 通过文本行搜索的正确方法,re.findall() 和 re.search() 都不能完全工作

java - 如何检查正则表达式中第一个字符以外的字符

regex - htaccess 正则表达式匹配除字符串或扩展名之外的所有内容

python - 使用 Python 删除文件中的括号和文本

regex - 无法使用正则表达式提取单词 : no method to_string for Match