我正在处理一些我想删除的空白空间。一个例子:
Envelopes/Env. Thick/Env. Thin 0 pages
Label 0 pages
Hagaki 0 pages
Replace Count
Drum Unit 0
Toner 0
我尝试使用preg_replace('/\s\s+/', ' ', $content);
,但结果并非我的预期。 preg_replace的输出:
Envelopes/Env. Thick/Env. Thin 0 pages Label 0 pages Hagaki 0 pages Replace Count Drum Unit 0 Toner 0
我想要的是什么:
信封/ env的。厚/信封。薄0页
标签0页
Hagaki 0页
更换计数鼓单元0
碳粉0
我的代码:
<?php
$cw=curl_init("http://192.168.1.135/printer/maininfo.html");
$txtfl=fopen("printermtpage.txt","w");
curl_setopt($cw, CURLOPT_FILE, $txtfl);
curl_setopt($cw, CURLOPT_HEADER, false);
curl_exec($cw);
curl_close($cw);
$file="printermtpage.txt";
$txtopentoread=fopen("printermtpage.txt","r");
$txtread=fread($txtopentoread,filesize($file));
$notags=strip_tags(html_entity_decode($txtread));
$remblanks=preg_replace('/\s\s+/', ' ', $notags);
fclose($txtfl);
?>
答案 0 :(得分:3)
RegEx \s
匹配[\r\n\f\t\v ]
,因为您不需要删除换行符(或者班级中的其他人),您可以使用:
$remblanks=preg_replace('/[ \t]+/',' ',$notags);
在此解释演示:http://regex101.com/r/tS0vG7
高级RegEx,用于删除2个以上的空白字符:
preg_replace('/(?|([ \t]){2,}|(?:\r?(\n)){2,})/','\1',$notags);
在此解释演示:http://regex101.com/r/nU4fU2
答案 1 :(得分:2)
我认为问题是\s
也匹配换行符(\n
)。因此,您将新行转换为空格,有效地将它们全部放在一行上。
尝试使用\[:blank:\]
仅匹配空格和标签。