我得到$row['message']从一个MySQL数据库,我需要删除所有的空白,如\n \t等。
$row['message'] = "This is a Text \n and so on \t Text text.";
应格式化为:
$row['message'] = 'This is a Text and so on Text text.';
我试着:
$ro = preg_replace('/\s\s+/', ' ',$row['message']);
echo $ro;
但它不删除\n或\t,只删除单个空格。有人能告诉我怎么做吗?
我不能在这里重复这个问题:
$x = "this \n \t\t \n works.";
var_dump(preg_replace('/\s\s+/', ' ', $x));
// string(11) "this works."
我不确定这是否只是一个转录错误,但在您的示例中,您使用的是单引号字符串。如果有双引号字符串,\n和\t只被当作换行符和制表符。那就是:
'\n\t' != "\n\t"
编辑:正如Codaddict指出的那样,\s\s+不会取代一个制表符。我仍然不认为使用\s+是一个有效的解决方案,所以这样如何:
preg_replace('/(?:\s\s+|\n|\t)/', ' ', $x);
我不能在这里重复这个问题:
$x = "this \n \t\t \n works.";
var_dump(preg_replace('/\s\s+/', ' ', $x));
// string(11) "this works."
我不确定这是否只是一个转录错误,但在您的示例中,您使用的是单引号字符串。如果有双引号字符串,\n和\t只被当作换行符和制表符。那就是:
'\n\t' != "\n\t"
编辑:正如Codaddict指出的那样,\s\s+不会取代一个制表符。我仍然不认为使用\s+是一个有效的解决方案,所以这样如何:
preg_replace('/(?:\s\s+|\n|\t)/', ' ', $x);