文章清理期间保留空格和换行符

时间:2016-06-29 16:56:36

标签: php regex string char

我尝试创建像清理文章功能的东西。我的意思是一个清理或规范化html博客网站中显示的文章内容的函数。

必须删除除\n以外的所有空格。换行和空间。

我开始想通过addcslashes php函数对换行符和空格进行编码。然后删除所有空格。然后使用stripslashes。然后用单个\x20次出现。因此,对于正则表达式操作,它将类似于换行符和空格临时休眠。

但是我没有成功,因为输出中没有输入中存在的换行符。

在线版https://ideone.com/I4oZCJ

我的代码不起作用:

<?php
    $text = 'first line
second line';
    $text = addcslashes($text, "\x20\t");
    $text = preg_replace('/\s+/', ' ', $text);
    $text = stripslashes($text);
    $text = preg_replace('/\s+/', ' ', $text);
    var_dump($text);

如何获得它?

谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用\h类替换水平空白字符:

preg_replace('/\h+/', ' ', $text');

Demo

或者,您可以创建自己的角色类,但不包括想要替换的所有角色:

 preg_replace('/[^\S\n]+/', ' ', $text);

基本上,这匹配所有不是\S(非空白)而不是\n的字符(没有新行字符)。两者都有效。

答案 1 :(得分:0)

https://ideone.com/hJrH8R

<?php
function clean($text) {
    $text = preg_replace('/[\cK\f\r\x85]+/', '', $text);
    $text = preg_replace('/\h+/', ' ', $text);
    return  $text;
}