PHP删除重复空格

时间:2011-11-02 12:20:56

标签: php preg-replace trim

为什么这不起作用?

$content=file_get_contents('whatever.txt');
$content=str_replace("\r\n","\n",$content); // Convert linebreaks
$content=str_replace("\n",' ',$content); // Remove linebreaks
$content=preg_replace('/\s+/',' ',$content); // Remove all duplicate spaces
$content=preg_replace('/[^a-zA-Z\s]/','',$content); // Remove all non-letters
$content=trim($content);
$content=explode(' ',$content);

有些值仍为空格:

E.g。

$content[123] = '';

我是否理解错误的内容?当然应该没有?

3 个答案:

答案 0 :(得分:4)

我认为整个事情可以在这些方面进行总结/修正:

$content = file_get_contents('whatever.txt'); // Get file
$content = preg_replace('/[^a-zA-Z\s]/', '', $content); // Strip non-alpha/whitespace
$content = preg_split('/\s+/', $content, NULL, PREG_SPLIT_NO_EMPTY); // Split by whitespace and remove empty elements

答案 1 :(得分:2)

我不能具体告诉你,但你可以试试这个:

$content = file_get_contents('whatever.txt');
$content = preg_replace('/[^a-zA-Z\s]+/', '', $content); // Remove all non-letters
$content = trim($content); // Trim
$content = preg_split('/\s+/', $content); // Split

这会遗漏多余的内容,而preg_split会同时处理一个或多个空白字符(包括\r\n)。

修改:添加修剪以防止在开头和结尾显示空标记(如果适用)。这也可以通过使用PREG_SPLIT_NO_EMPTY标志来完成,但是,它会在多个地方(理论上)进行,所以要隐藏可能是OP中的错误。

答案 2 :(得分:1)

尝试打印您的最终内容,看看有多少额外的空白区域在使用爆炸后导致阵列中出现空元素