所以,首先我有这个输入
$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/