0

ターゲット タグにネストされたすべてをキャッチするには、正規表現が必要です。

<?xml version="1.0" encoding="utf-8"?>
<data>
<target>
"<x id="c400c8394f0a"  pid="NLCaption" name="NLCaption" />Caption"
</target>

<target />

<target><x id="a1e6b03cb682"  pid="NLSheets" name="NLSheets" />Sheets"</target>

</data>

次の正規表現の作成を手伝ってくれた Brettz に感謝します。

$pattern = "@<target(?:\s.*?)?>(.*?)</target\s*>@s";

この正規表現はその役目を果たし、すべてのコンテンツを取得するのに役立ちます。しかし、唯一の問題は、 <target />タグもキャッチすることです。

ペアになっていないタグをキャッチしない正規表現を修正したい。すなわち<target />

私を助けてください

4

4 に答える 4

4

SimpleXMLを使用する

$data = new SimpleXMLElement($xmlstr);
echo $data->target[0];

これは、XMLでSimpleXMLを使用する例です。

于 2012-04-20T17:05:28.200 に答える
1
$tagname = 'target';
$pattern = "@<$tagname(?:\s.*?!/)?>(.*?)</$tagname\s*>@s"; 
于 2012-04-21T06:51:36.583 に答える
0

最初のセクションの末尾を変更して、スペースのみを許可し、他の文字を許可しないようにすることができます。

<target\s*>(.*?)</target\s*>

xml パーサーは、長期的には依然として適切なソリューションであることはほぼ確実ですが、これはコードを機能させるための迅速な方法です。

于 2012-04-20T17:22:23.043 に答える
0
$pattern = "(?<=<target>).+(?=</target>)";
于 2012-04-20T17:01:11.570 に答える