1

だから私は私にいくつかのインラインスタイルでたくさんのhtml出力を与えるこのプログラムを手に入れました。

通常、次のようになります。

<DIV style="position:absolute;top:126;left:324"><nobr><span class="ft010"><b>2011</b></span></nobr></DIV>
<DIV style="position:absolute;top:126;left:386"><nobr><span class="ft010"><b>2010</b></span></nobr></DIV>

今、私はこれが混乱していることを知っています、しかしそれは私が得るものであり、それを変更することは今のところオプションではありません。ただし、私がする必要があるのは、top属性とheight属性の後にpxを入力するための正規表現を取得することです。だから私が欲しいものは次のようになります:

<DIV style="position:absolute;top:126px;left:324px"><nobr><span class="ft010"><b>2011</b></span></nobr></DIV>
<DIV style="position:absolute;top:126px;left:386px"><nobr><span class="ft010"><b>2010</b></span></nobr></DIV>

htmlは1つの長い文字列として出力されるため、上と左のすべての出現箇所を検索し、数値の後にpxを追加する必要があります。私はさまざまな解決策を試してきましたが、それでも正しく理解できません。誰かが私の問題の正しい正規表現を見つけるのを手伝ってくれるといいですね。私はそのようなもので恐ろしいです。

4

4 に答える 4

3
$html = preg_replace('%(top|left|right|bottom)(:[0-9]{1,4})(;|")%', '$1$2px$3', $html);

これは、CSS 位置キーワードのいずれか、その後に続くコロン、数字 (1 ~ 4 桁)、および二重引用符 ( ") またはセミコロン ( ;) のいずれかを検索する必要があります。

次に、これらの 3 つの部分 (括弧内の部分) をすべて取得pxし、適切な場所で a を使用してそれらをつなぎ合わせます。

http://codepad.viper-7.com/UjYCV3

于 2012-09-05T16:23:47.463 に答える
0

次のようなものが必要だと思います:

$html=preg_replace('/(.+)(left|top|bottom|right):([\d]+)(.+)/i','$1$2:$3px;$4',$html);

私はテストしていませんが、正規表現はよく書かれていると思います

于 2012-09-05T16:21:13.930 に答える
0

Febi の回答よりも適切な回答は次のとおりです。

$html = preg_replace("/(?:left|top|right|bottom|width|height)\s*:\s*\d+/","$0px",$html);
于 2012-09-05T16:24:42.633 に答える
0

これを試しましたか?

$html=str_replace(';left:','px;left:',$html);
$html=str_replace('"><nobr>','px"><nobr>',$html);
于 2012-09-05T16:07:01.567 に答える