1

これは単純な正規表現だと思っていましたが、今朝は頭がおかしいとは思いません!

私はページのソースコードを取得し、他の preg_replaces の束で整理しているので、以下の正規表現に到達するまでに、結果はすでにコメントなどを取り除いた 1 行の文字列になっています。

私が今やろうとしているのは、> と < の文字の間のテキストをトリミングして、余分な空白を削除することだけです。いえ

<p>    hello world   </p>

なるべき

<p>hello world</p>

これでうまくいくと思ったのですが、何もしないようですか?

$data = trim(preg_replace('/>(\s*)([^\s]*?)(\s*)</', '>$2<', $data));

乾杯。

4

4 に答える 4

0

このコード スニペットを使用できます。

$x = '<p>    hello world   </p>';
$foo = preg_replace('/>\s+/', '>', $x);  //first remove space after ">" symbol
$foo = htmlentities(preg_replace('/\s+</', '<', $foo)); //now remove space before "<" symbol
echo $foo;
于 2013-11-09T12:05:40.040 に答える
-1

正規表現は次のようになります。

>\s+(.*[^\s])\s+<

しかし、それを使用しないでください。その目標を達成するためのより良い方法があります (例: HTMLtidy)

于 2013-11-09T11:28:48.033 に答える
-1

正規表現で /e 修飾子を使用して、置換中に trim() 関数を使用できます。

$data = preg_replace('/>([^<]*)</e', '">" . trim("$1") . "<"', $data);
于 2013-11-09T11:50:35.493 に答える