3

削除したい余分な空白を扱っています。例:

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

私が欲しいもの:

封筒/封筒 厚い/環境。薄紙 0 ページ
ラベル 0 ページ
はがき 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);

?>
4

2 に答える 2

3

RegEx が\s一致[\r\n\f\t\v ]し、改行 (またはクラス内の他の行) を削除する必要がないため、次を使用できます。

$remblanks=preg_replace('/[ \t]+/',' ',$notags);

ここで説明されたデモ: http://regex101.com/r/tS0vG7

アップデート

2 つ以上の空白文字を削除する高度な正規表現:

preg_replace('/(?|([ \t]){2,}|(?:\r?(\n)){2,})/','\1',$notags);

ここで説明されたデモ: http://regex101.com/r/nU4fU2

于 2013-03-23T22:36:17.143 に答える
2

\s問題は、改行文字 ( ) にも一致することだと思います\n。したがって、改行をスペースに変換して、効果的にすべてを 1 行に配置します。

\[:blank:\]スペースとタブのみを一致させるために使用してみてください。

于 2013-03-23T22:36:19.630 に答える