【发布时间】:2011-03-21 09:48:47
【问题描述】:
我想从 XML 文件中删除所有换行符和回车符,以便所有标签各占一行。
XML 源示例:
<resources>
<resource>
<id>001</id>
<name>Resource name 1</name>
<desc>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas nibh magna, fermentum et pretium vel, malesuada sit amet dolor. Morbi dictum, nunc sed interdum facilisis, ligula enim pharetra tortor, at egestas urna massa non nulla.</desc>
</resource>
<resource>
<id>002</id>
<name>Resource name 2</name>
<desc>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas nibh magna, fermentum et pretium vel, malesuada sit amet dolor. Morbi dictum, nunc sed interdum facilisis, ligula enim pharetra tortor, at egestas urna massa non nulla.
</desc>
</resource>
<resource>
<id>003</id>
<name>Resource name 3</name>
<desc>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas nibh magna, fermentum et pretium vel, malesuada sit amet dolor.
Morbi dictum, nunc sed interdum facilisis, ligula enim pharetra tortor, at egestas urna massa non nulla.
</desc>
</resource>
</resources>
我的看法:
$pattern = "#(\t\t<[^>]*>[^<>]*)[\r\n]+([^<>]*</.*>)#";
$replacement = "$1$2";
$data = preg_replace($pattern, $replacement, $data);
此模式更正第二个资源并将其放回原来的位置。但是,它不会更正来自第 3 个资源的 2 个换行符,它只会更正一个。结果是这样的:
<resources>
<resource>
<id>001</id>
<name>Resource name 1</name>
<desc>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas nibh magna, fermentum et pretium vel, malesuada sit amet dolor. Morbi dictum, nunc sed interdum facilisis, ligula enim pharetra tortor, at egestas urna massa non nulla.</desc>
</resource>
<resource>
<id>002</id>
<name>Resource name 2</name>
<desc>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas nibh magna, fermentum et pretium vel, malesuada sit amet dolor. Morbi dictum, nunc sed interdum facilisis, ligula enim pharetra tortor, at egestas urna massa non nulla.</desc>
</resource>
<resource>
<id>003</id>
<name>Resource name 3</name>
<desc>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas nibh magna, fermentum et pretium vel, malesuada sit amet dolor.
Morbi dictum, nunc sed interdum facilisis, ligula enim pharetra tortor, at egestas urna massa non nulla.</desc>
</resource>
</resources>
我的模式有什么问题?
【问题讨论】:
标签: php xml regex newline line-breaks