2
<trans-unit id="8">
<source>Special settings for:</source>
<target>Special settings for:</target>
</trans-unit>

ターゲットタグのIDと内容を取得しようとしています。上記の構造は、解析しようとしている XML で何度も繰り返されます。

現在、以下の式を使用していますが、空の配列以外は何も返しません。

preg_match_all('#<trans-unit id="(.*)">(.*)<target>(.*)</target>(.*)</trans-unit>#Ui', $xml, $matches);
4

3 に答える 3

4

代わりに xml パーサーを使用してください。

$xml = simplexml_load_string($string);
print_r($xml);
于 2012-06-22T07:36:43.683 に答える
1

/ sパターン修飾子を使用して、ドット(。*)を改行文字を含むすべての文字に一致させることができます。デフォルトでは、PCREは文字列を長い1行の文字列として扱います。

http://php.net/manual/en/reference.pcre.pattern.modifiers.php

したがって、上記の例では:

preg_match_all('#<trans-unit id="(.*)">(.*)<target>(.*)</target>(.*)</trans-unit>#Uis', $xml, $matches);
于 2012-06-22T07:39:58.060 に答える
0

s複数行の一致機能を追加するには、PHP で正規表現にオプションを指定する必要があります (つまり、.改行も一致します)。

edit : 詳細については、mオプションをに変更しましsた。以下のコメントを参照してください。

于 2012-06-22T07:36:16.250 に答える