2

PHP 関数 preg_match_all を使用して、html コードの一部を見つけて別のものに置き換えたいと考えています。

これは私が見つける必要があるものです:

<attachfiles>
tag{link} attr{rel="stylesheet" type="text/css" media="screen"} 
sources{
file1.css,
file2.css
}
</attachfiles>

それを見つける正規表現を作成しましたが、そのコードがhtml全体に1回存在する場合のみです。

私の正規表現は次のとおりです。

"|\<attachfiles\>(.*)\<\/attachfiles\>|s"

コードを 2 回以上繰り返すと、問題が発生します。正規表現は |s 演算子 (複数行) を使用するため、コードを複数回使用すると、最初のコードから最後までのすべての html コードが返されます。

例えば:

<attachfiles>
tag{link} attr{rel="stylesheet" type="text/css" media="screen"} 
sources{
file1.css,
file2.css
}
</attachfiles>

... html code ...
... html code ...

<attachfiles>
tag{script} attr{type="text/css" language="javascript"} 
sources{
file1.js,
file2.js
}
</attachfiles>

この場合の私の正規表現は、最初からすべてのコードを返します

<attachfiles> to the last </attachfiles> 

含んでいる

... html code ... 
... html code ... 

それは私が探しているコードの間にあります。

4

1 に答える 1

0

DOMを使用して、new DOMDocument()thenloadHTML($html)を作成し、 withをgetElementsByTagName('attachfiles')繰り返し処理してから、必要な操作を実行します。->length->item(i)replaceChild

于 2010-09-18T22:49:43.920 に答える