为什么这不起作用?
$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] = '';
我是否理解错误的内容?当然应该没有?
答案 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)
尝试打印您的最终内容,看看有多少额外的空白区域在使用爆炸后导致阵列中出现空元素