整形式ではないXMLファイルを処理する必要があります。preg_replace式に新しい行を含める方法
私はいくつかのタグの内容に<![CDATA[ ... ]]>
を含めることにしました。
$pattern = "/<$tagname?>(.*)?<\/$tagname>/";
$replacement = "<$tagname><![CDATA[$1]]></$tagname>";
$xml = file_get_contents($inputFilename);
preg_match($pattern, $xml, $match);
echo "\nFirst Ocurrence: " . $match[0];
$modifiedXml = preg_replace($pattern, $replacement, $xml);
preg_match($pattern, $modifiedXml, $match);
echo "\nFirst Ocurrence Modified: " . $match[0];
それは良い動作しますが、私のXMLノードは、例えば、新たなラインを持っている場合:
<node> foo
bar
</node>
それは動作しません。私はこのような何かをしました。私は/s
を置かなければならないことを読んだが、どこに私の正規表現に入れなければならないのか分からない。
この疑問符の配置を詳しく見ることができます。 ;)私はそれがその質問のようなものだと知っていますが、あなたはエラーを繰り返すことによって誰かを助けていません。 –
@AlanMoore私は以前に働いていたので、彼の正規表現を繰り返しただけで、OPには問題はありませんでした。 '$ tagname? 'の疑問符も正しいのは奇妙です。 – Cheery
Doh!私はそれに気付かなかった。 : - /それは、開始タグで要素の名前をオプションにしたいが、終了タグでは依然として必須であるように見える。それは盲目的にコピーするのではなく、私が修正した(または少なくともコメントした)別のエラーです。 –